Изменение ограничений нажатием кнопки - PullRequest
0 голосов
/ 22 января 2020

Есть ли способ изменить ограничение centerXAnchor представления на другой объект (с анимацией), нажав кнопку во время работы приложения?

Спасибо за все ответы!

Ответы [ 4 ]

2 голосов
/ 22 января 2020
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var centerXConstraintOutlet: NSLayoutConstraint!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func buttonClickAction(_ sender: UIButton) {
        animateViewCenterXConstraint()
    }

    func animateViewCenterXConstraint() {
        UIView.animate(withDuration: 0.3) {
            self.centerXConstraintOutlet.constant = 30
            self.view.layoutIfNeeded()
        }
    }
}
2 голосов
/ 22 января 2020

Во-первых, вам нужно создать IBOutlet для вашего ограничения из раскадровки, что-то похожее на это.

@IBOutlet weak var centerXConstraint: NSLayoutConstraint!

И когда кнопка нажата, вы должны изменить значение ограничения и обновить макет представления.

centerXConstraint.constant = setYourValueHere
UIView.animate(withDuration: 0.3, animations: { 
   self.view.layoutIfNeeded()
})

Если вы хотите программно добавить ограничения, то удалите @IBOutlet weak.

var centerXConstraint: NSLayoutConstraint!

. Присвойте ему привязку центра X вашего вида.

centerXConstraint = yourView.centerXAnchor.constraint(equalTo: super.view.centerXAnchor, constant: 0)
centerXConstraint.isActive = true

после этого вы можете изменить его, как описано выше.

0 голосов
/ 22 января 2020

Объявить переменную для ограничения centerXAnchor и назначить значение для действия кнопки. Вы можете попробовать это:

var constraintOfCenterXAnchor: NSLayoutConstraint = NSLayoutConstraint()

в viewDidLoad() установить constraintOfCenterXAnchor.constant = 0

Когда нажата кнопка, измените значение ограничения и обновите представление

constraintOfCenterXAnchor.constant = 30
 UIView.animate(withDuration: 0.3, animations: { 
       self.view.layoutIfNeeded()
 })
0 голосов
/ 22 января 2020

1) Создание ограничений centerXAnchor представления, связанных с обоими объектами.

2) Возьмите выходы обоих ограничений.

3) Активируйте и деактивируйте их по нажатию кнопки, когда вы sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...