Изменение расположения якорей взгляда на действие
У меня есть одна верхняя метка, один вид и кнопка.
В ViewDidLoad()
Метод Я дал некоторые ограничения макета для представления. При нажатии на кнопку мне нужно обновить эти ограничения (то есть вид должен двигаться вниз). Как мне это сделать.
Вот мой код для этого. Но это не работает.
let keyView = UIView()
override func viewDidLoad() {
keyView.frame = CGRect(x: 0, y: 0, width: 100, height: 30)
keyView.backgroundColor = UIColor.cyan
keyView.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(keyView)
keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor , constant: 10).isActive = true
keyView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: 20).isActive = true
keyView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -20).isActive = true
keyView.bottomAnchor.constraint(equalTo: keyView.topAnchor, constant: keyView.frame.size.height).isActive = true
}
Код в этом действии заключается в следующем.
func buttonAction(sender: UIButton!) {
keyView.translatesAutoresizingMaskIntoConstraints = false
keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor, constant: CGFloat(i*50))
keyView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: 20)
keyView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor, constant: -20)
keyView.bottomAnchor.constraint(equalTo: keyView.topAnchor, constant: keyView.frame.size.height)
i + =1
}
Согласно приведенному выше коду, при нажатии на кнопку keyView должен двигаться вниз. Но это не движется вниз.
Пожалуйста, помогите мне. Заранее спасибо.
1 ответ
Возьмите глобальную переменную типа NSLayoutConstraint, которая выглядит следующим образом:
var keyViewTopConstraint: NSLayoutConstraint?
Теперь в viewDidLoad, давая начальные ограничения. Дайте следующим
keyViewTopConstraint = keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor , constant: 10)
keyViewTopConstraint?.isActive = true
Теперь в этом действии. удалите начальное ограничение и создайте другое ограничение и сделайте его активным. Для этого сделайте следующее
keyViewTopConstraint?.isActive = false
keyViewTopConstraint = keyView.topAnchor.constraint(equalTo: upperLabel.bottomAnchor, constant: CGFloat(i*50))
keyViewTopConstraint?.isActive = true