Можете ли вы ввести значение ограничения с десятичной точкой в ​​IB?

Здесь нужно надеяться, что это простая настройка.

Я не могу ввести значение ограничения с десятичными знаками в IB. Всякий раз, когда я вводим значение с десятичными знаками и нажимаю Enter, система обходит его!

У меня нет этой проблемы при создании ограничений в коде. Только в IB.

Есть ли способ?

Ответ 1

Да, вы можете.

  • Введите значение с помощью постфикса "f" следующим образом: введите описание изображения здесь

  • Нажмите "Приоритет". обратите внимание, как значение эффективного ограничения изменяется на 0,5: введите описание изображения здесь

  • Нажмите ESC

Ответ 2

Это должно быть сделано программно, я считаю. Начиная с Xcode 6.3, константы константы ограничения ограничены целыми числами в редакторе раскадровки (в отличие от значений множителя, которые могут быть десятичными).

Для гуглеров, вот как это сделать:

Чтобы указать десятичное значение для ограничения, определенного в раскадровке, вы можете установить свойство константы ограничения iVar. Здесь приведен пример установки ограничения высоты на 0,5f:

В заголовке

@property (nonatomic, retain) IBOutlet NSLayoutConstraint *separatorHeightConstraint;

затем подключите IBOutlet к ограничению в раскадровке.

В вашей реализации:

-(void)layoutSubviews {
    [super layoutSubviews];
    self.separatorHeightConstraint.constant = 0.5f;
}

Что все!

Ответ 3

Если вам нужно установить постоянное десятичное значение в раскадровке, которое не зависит от масштаба экрана, вы можете использовать user defined runtime attributes, например, для константы ограничения это будет:

Путь к ключу: constant Тип: Number Значение: 0,5


Если вы хотите сделать разделитель, создав представление с шириной 1 пиксель на устройствах @2x и @3x, вы можете использовать ограничение, которое устанавливает ширину/высоту представления и устанавливает его класс в свой собственный подкласс ограничения. Пример такого подкласса: OnePixelWidthConstraint.h:

#import <UIKit/UIKit.h>

@interface OnePixelWidthConstraint : NSLayoutConstraint
@end

OnePixelWidthConstraint.m:

#import "OnePixelWidthConstraint.h"

@implementation OnePixelWidthConstraint

- (CGFloat)constant {
    return 1./[UIScreen mainScreen].scale;
}

@end

Чтобы вычислить значение только один раз:

- (CGFloat)constant {
    static CGFloat onePixel = 0;
    return onePixel?:(onePixel = 1./[UIScreen mainScreen].scale);
}

Ответ 4

Я бы сделал это в:

- (void)updateConstraints {
   self.separatorHeightConstraint.constant = 0.5f;
   [super updateConstraints];
}

Ответ 5

Введите желаемое десятичное значение с ведущим 0.

например. 0,9, не 0,9