2017-01-09 6 views
0

Ich versuche, eine Einschränkung zu animieren, aber es scheint, die gesamte Ansicht zu beeinflussen. Hier ist der Code, den ich verwende, um die Einschränkung zu animieren.Versuch, eine NSLayoutConstraint mit Swift 3 zu animieren

@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() 
}) 

}

Alles in der Ansicht bewegt, wenn die Animation los ist, aber ich bin mir nicht sicher, warum. Was ich animieren möchte, ist die Höhe der Ansicht, aber nicht das TextField oder die Schaltfläche. Stellen Sie sich GreyView als Hintergrundelement des TextFields vor.

Hier ist ein Bild, das Ihnen zu zeigen, die ich Constraint (grün)

Rosa Box stellt die übergeordnete Ansicht zu animieren versuchen. Grey Box ist die Ansicht, die ich versuche, die Höhe von zu animieren. Das TextField und die Schaltfläche befinden sich über dem Gray-Box-Objekt.

enter image description here

+0

Das Problem ist entweder (a) Sie haben Einschränkungen zwischen der animierten Ansicht und den anderen Ansichten, die sich bewegen; (b) Sie haben mehrdeutige Einschränkungen; oder (c) Sie haben etwas Verwirrung in Bezug auf die vorhandenen Einschränkungen (z. B. Scroll-Ansichten sind häufige Quelle der Verwirrung, a la [TN2154] (https://developer.apple.com/library/ios/technotes/tn2154/_index.html)). Aber hier ist nicht genug, um das Problem zu diagnostizieren. Und anstatt mehr Details zu liefern, destillieren Sie dies weiter zu [MCVE] (http://stackoverflow.com/help/mcve) mit genügend Details, die uns erlauben, das Problem zu reproduzieren. – Rob

+0

@Rob, gab die Frage eine Bearbeitung, ich hoffe, es ist prägnanter. – icekomo

Antwort

0

Sie können die falsche Ansicht animieren, nachdem alle so klar über Ihre Frage sein, wenn Sie x Ansicht haben, die in einer anderen Ansicht verschachtelt und wollen nur x Ansicht animieren dann sollten Sie make

self.x.layoutIfNeeded() 

statt

self.view.layoutIfNeeded() 
Verwandte Themen