2015-01-24 14 views
34

Voglio animare un oggetto, quindi dichiaro un vincolo e lo aggiungo alla vista. Quindi aggiorno la proprietà constant del vincolo all'interno di un'animazione UIView. Perché questo codice non sposta l'oggetto?Aggiorna la proprietà costante di un vincolo a livello di codice in Swift?

UIView.animateWithDuration(1, animations: { 
    myConstraint.constant = 0 
    self.view.updateConstraints(myConstraint) 
}) 

risposta

75

Per dichiarare un'animazione, non è possibile ridefinire il vincolo e chiamare updateConstraints. Si suppone di cambiare il constant del vincolo e seguire il seguente formato:

self.view.layoutIfNeeded() 
UIView.animateWithDuration(1, animations: { 
    self.sampleConstraint.constant = 20 
    self.view.layoutIfNeeded() 
}) 
+3

self.view.layoutIfNeeded() era esattamente quello che stavo cercando! Grazie mille per questo. Solo un dubbio .. ha anche qualche tipo di successo nelle prestazioni? –

+2

@MuditJaju Se non è in UITableView, in genere non ci sono problemi di prestazioni. – duan

Problemi correlati