2016-04-30 22 views
6

Ho vista sView all'interno del mio ViewController. L'altezza ha un vincolo - Ho creato IBOutlet per questo vincolo - sViewHeightConstraint. Voglio diminuire l'altezza di sView con l'animazione.Altezza vista animata con Swift

ho creato la funzione

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

Altezza di vista sta cambiando, ma non vedo alcuna animazione. Cosa sto facendo di sbagliato?

risposta

27

uso layoutIfNeeded()

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

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

rapida 3

view.layoutIfNeeded() 
sViewHeightConstraint.constant = 50 

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

grazie! puoi spiegare - cosa significa questo codice? – moonvader

+0

@moonvader 'layoutIfNeeded' sulla vista forza la fine di tutte le operazioni in sospeso e quindi nel blocco di animazione acquisisce le modifiche al frame. –

+0

per maggiori informazioni. controlla http://stackoverflow.com/questions/1182945/how-is-layoutifneeded-used –

Problemi correlati