2016-04-30 9 views
6

Ich habe gesehen sView in meinem ViewController. Es hat eine Beschränkung - ich habe IBOutlet für diese Einschränkung erstellt - sViewHeightConstraint. Ich möchte die Höhe von sView mit Animation verringern.Animierte Ansichtshöhe mit Swift

Ich habe Funktion

UIView.animateWithDuration(5.5, animations: { 
       self.sViewHeightConstraint.constant = 50 
      }) 

Höhe Ansicht zu ändern, aber ich sehe keine Animation. Was mache ich falsch?

Antwort

27

Verwendung layoutIfNeeded()

view.layoutIfNeeded() // force any pending operations to finish 

UIView.animateWithDuration(0.2, animations: {() -> Void in 
    self.sViewHeightConstraint.constant = 50 
    self.view.layoutIfNeeded() 
}) 

swift 3

view.layoutIfNeeded() 
sViewHeightConstraint.constant = 50 

UIView.animate(withDuration: 1.0, animations: { 
    self.view.layoutIfNeeded() 
}) 
+0

danke! Kannst du erklären, was dieser Code bedeutet? – moonvader

+0

@moonvader 'layoutIfNeeded' in der Ansicht erzwingen, dass alle ausstehenden Operationen beendet werden und dann im Animationsblock die Rahmenänderungen erfassen. –

+0

für weitere Informationen. Überprüfen Sie http://stackoverflow.com/questions/1182945/how-is-layoutifneeded-used –