UIViews
содержат информацию о собственной внешности и содержании.
NSLayoutConstraints
часто добавляются в UIViews, чтобы изменить их распределение по экрану.
Вы получаете сообщение об ошибке, поскольку пытаетесь получить доступ к свойству constant
, которое не найдено в UIViews
. Вы близко, хотя. Вам нужен NSLayoutConstraint.
Шаг 1: Установите ограничения
Вы можете сделать это программно ( подробнее здесь ) или с помощью раскадровки / перья. Вот пошаговое описание подхода раскадровки / кончика:
- Добавьте ограничение в раскадровку или кончик с автоматическим макетом.
- Создайте переменную
NSLayoutConstraint
в своем UIView класс. - Вернувшись в раскадровку, найдите вновь созданное ограничение. Он будет отображаться в вашем навигаторе слева, рядом с вашим
UIView
. - Выберите ограничение, которое вы ищете, и перейдите на крайнюю правую вкладку правой панели Xcode.
- Перетащите «Новый источник ссылок» с правой панели в класс
UIViewController
в вашем навигаторе представлений. - Если все сделано правильно, появится опция для вашего нового
NSLayoutConstraint
. Выберите это.
Теперь переменная в вашем коде ссылается на ограничение, которое вы сделали визуально. Если эти шаги сбивают с толку, и вы очень новичок (я не могу точно сказать), пожалуйста, обратитесь это подробное руководство к раскадровке.
Шаг 2: Соедините все вместе
Получите доступ к вашему значению NSLayoutConstraint
* constant
. Ваш код должен выглядеть примерно так после завершения всех вышеперечисленных шагов:
// In your class's definitions.
// This is what you'll have to link programmatically or in your storyboard/nib
@IBOutlet var changePassViewBottomConstraint: NSLayoutConstraint!
// Later on in your function:
self.changePassViewBottomConstraint.constant = -1 * keyboardRect.height/2