2017-01-09 4 views
0

Я пытаюсь анимировать ограничение, но оно, кажется, влияет на весь вид. Вот код, который я использую для анимации ограничения.Пытается анимировать NSLayoutConstraint с Swift 3

@IBOutlet weak var personHeight: NSLayoutConstraint! 

func animateBackgroundHeight() { 
print("animate") 
UIView.animate(withDuration: 5.0, animations: { 
    self.personHeight.constant = 19 // personHeight is the IBOutlet to the constraint 
    self.view.layoutIfNeeded() 
}) 

}

Все в видовых движется, когда анимация происходит, но я не знаю, почему. То, что я хочу оживить, - это высота представления, но не эффект TextField или кнопки. Подумайте о GreyView в качестве фонового элемента TextField.

Вот изображение, чтобы показать вам, какие Constraint Я пытаюсь анимировать (зеленую)

Розовый блок представляет родительский вид. Серый ящик - это вид, который я пытаюсь оживить по высоте. TextField и кнопка находятся над объектом Gray Box.

enter image description here

+0

Проблема заключается в том, что (a) у вас есть ограничения между анимированным представлением и другими видами, которые перемещаются; (b) у вас есть двусмысленные ограничения; или (c) у вас есть некоторая путаница в отношении существующих ограничений (например, представления прокрутки являются общим источником путаницы, a la [TN2154] (https://developer.apple.com/library/ios/technotes/tn2154/_index.html)). Но этого недостаточно, чтобы диагностировать проблему. И вместо того, чтобы предоставлять более подробную информацию, перейдите к [MCVE] (http://stackoverflow.com/help/mcve) с достаточным количеством деталей, которые позволяют нам воспроизводить проблему. – Rob

+0

@Rob, дал вопрос редактировать, я надеюсь, что он будет более кратким. – icekomo

ответ

0

Вы можете анимировать неправильный вид в конце концов так, чтобы иметь четкое представление о вашем вопросе если у вас есть х вид, что вложен в другой точке зрения и хотите анимировать только х вид , то вы должны грима

self.x.layoutIfNeeded() 

вместо

self.view.layoutIfNeeded()