2016-04-30 80 views
6

我在ViewController中查看sView。它的高度有限制 - 我爲此限制創建了IBOutlet - sViewHeightConstraint。我想用動畫降低sView的高度。使用Swift動畫查看高度

我創建功能

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

高度的觀點正在發生變化,但我沒有看到任何動畫。我做錯了什麼?

回答

27

使用layoutIfNeeded()

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

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

迅速3

view.layoutIfNeeded() 
sViewHeightConstraint.constant = 50 

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

謝謝!你能解釋一下 - 這個代碼的含義是什麼? – moonvader

+0

@moonvader'layoutIfNeeded'在視圖上強制任何掛起的操作完成,然後在動畫塊中捕獲幀更改。欲瞭解更多信息,請致電 –

+0

。檢查http://stackoverflow.com/questions/1182945/how-is-layoutifneeded-used –