Обновите ограничение раскадровки, используя код
У меня есть UIImage
в коде, который я хотел бы увеличить по вертикали при нажатии кнопки. UIImage
полностью ограничен в раскадровке, и я хотел бы изменить его высоту при нажатии кнопки.
Я связал UIImage
и его ограничение по высоте в коде:
@IBOutlet weak var botBotCons: NSLayoutConstraint!
@IBOutlet weak var botBot: UIImageView!
затем
@IBAction func testButton(sender: UIBarButtonItem) {
println("testButton pressed")
self.botBotCons.constant = 68 //or +=62 as its current constant is 6
self.view.layoutIfNeeded()
}
Я получаю сообщение testButton в консоли, но размер изображения не изменяется. Что я делаю неправильно? Нужно ли что-то менять в раскадровке?
1 ответ
Решение
Вам следует позвонить layoutIfNeeded
в блоке анимации. Apple фактически рекомендует вызывать его один раз перед блоком анимации, чтобы убедиться, что все ожидающие операции макета завершены. Я только что проверил с изменением размера кнопки - все работает отлично.
@IBOutlet weak var myBtn: UIButton!
@IBOutlet weak var btnHeight: NSLayoutConstraint!
@IBOutlet weak var btnWidth: NSLayoutConstraint!
@IBAction func resizeBtn(sender: AnyObject) {
self.myBtn.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0)
self.view.layoutIfNeeded()
self.btnHeight.constant += 50
self.btnWidth.constant += 50
UIView.animateWithDuration(0.7, animations: {
self.view.layoutIfNeeded()
})
}
PS убедитесь, что другие ограничения не блокируют ваши изменения.