Итак, у меня есть вид контейнера (который стыкуется с краями экрана) и дочерний вид, который должен входить и выходить из него.
func slideOut() {
UIView.animateWithDuration(Double(0.5), animations: {
self.container.bottomAnchor
.constraintEqualToAnchor(self.child.bottomAnchor).active = false
self.view.layoutIfNeeded()
})
}
func slideIn() {
UIView.animateWithDuration(Double(0.5), animations: {
self.container.bottomAnchor
.constraintEqualToAnchor(self.child.bottomAnchor).active = true
self.view.layoutIfNeeded()
})
print("numConstraints: \(container.constraints.count)")
}
Анимация slideIn() прекрасна, как и предполагалось. Проблема в том, что я не знаю, как сделать анимацию slideOut(). Если я просто деактивирую NSLayoutConstraint, как указано выше, ничего не произойдет. Если я попробую:
self.container.bottomAnchor
.constraintEqualToAnchor(self.child.topAnchor).active = true
тогда появляется предупреждение о невозможности одновременного удовлетворения ограничений, и ничего не происходит визуально.
Кроме того, всякий раз, когда я делаю активным NSLayoutConstraint, число ограничений (print(container.constraints.count)) увеличивается, что не может быть хорошо.
Итак, мои вопросы:
- Как сделать обратное от анимации
slideIn()в этом случае? - Как повторно использовать существующие ограничения в случае повторяющихся анимаций, чтобы количество ограничений не складывалось?