Так что я контейнер вид (который пристыкован к краям экрана) и ребенка мнение, что, как предполагается, чтобы скользить в и из нее.Добавление, повторное использование и удаление NSLayoutAnchors
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()
анимации в этом случае? - Как повторно использовать существующие ограничения в случае повторных анимаций, чтобы количество ограничений не складывалось?
Я пытался изменить UIScrollView contentSize, обновив его последнее нижнее ограничение subview с помощью якорей. Деактивация, изменение и реактивация выполняли эту работу. Спасибо за этот ответ, потому что было бы трудно догадаться, что с ним делать. – Skoua