UIViewPropertyAnimator Autolayout вопрос о ротации - PullRequest
0 голосов
/ 30 августа 2018

Вот базовая настройка, которая изолирует проблему:

private func setupConstraints() {
    self.slider.translatesAutoresizingMaskIntoConstraints = false
    self.redSquare.translatesAutoresizingMaskIntoConstraints = false

    self.slider.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
    self.slider.widthAnchor.constraint(equalTo: self.view.widthAnchor).isActive = true

    self.widthConstraint = self.redSquare.widthAnchor.constraint(equalToConstant: 50)
    self.widthConstraint?.isActive = true
    self.redSquare.heightAnchor.constraint(equalToConstant: 50).isActive = true
    self.redSquare.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true
    self.xAnchorConstraint = self.redSquare.centerXAnchor.constraint(equalTo: self.view.centerXAnchor, constant: -100)
    self.xAnchorConstraint?.isActive = true
}

private func setupAnimation() {
    self.animator = UIViewPropertyAnimator(duration: 1, curve: .linear) { [unowned self] in
        self.widthConstraint?.constant = 100
        self.xAnchorConstraint?.constant = 100
        self.view.layoutIfNeeded()
    }
}

@objc
private func sliderChanged(_ sender: UISlider) {
    self.animator?.fractionComplete = CGFloat(sender.value)
}

Ползунок устанавливает аниматор FractionComplete, который анимирует две константы ограничения. Я ожидаю, что смогу вычистить размер и положение квадрата. Первоначально это работает нормально.

Проблема

После вращения устройства положение квадрата становится фиксированным. Ползунок по-прежнему анимирует ширину квадрата, но больше не его позиция . Я смоделировал этот пример на нескольких устройствах. Проблема возникает только на iPad . Я могу поворачивать все, что хочу, на iPhone, и анимация работает как положено.

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