2016-02-12 131 views
0

我有一個非常簡單的項目,我想在標籤上設置右邊距的動畫,但是當我嘗試它時,它會立即完成。NSLayoutConstraint動畫立即完成

@IBAction func onDo(sender:UIButton) 
{ 
    self.view.setNeedsLayout() 
    self.testConstraint.constant = 40.0 

    UIView.animateWithDuration(2.0, animations: {() -> Void in 

     self.view.setNeedsLayout() 

     }) { (complete:Bool) -> Void in 

    } 
} 

該項目是在這裏:

https://www.dropbox.com/s/9a0v0906riunkww/test2222.zip?dl=0

我失去了一些東西明顯?

更新#1

看來它與UILabels一個問題而言,標準的UIView,或UIButton的動畫罰款....有啥錯一個UILabel?

更新#2

如果我設置的UILabel視圖內容模式爲中心,然後它工作正常,但它看起來並不很流暢......很奇怪。

+0

呼叫更換self.view.setNeedsLayout()'layoutIfNeeded()','不setNeedsLayout()' – dan

+0

我已經試過,在測試項目,它跳躍太:-( – Chris

+0

這很奇怪,這裏有一些想法http://stackoverflow.com/q/17360402/2683201 –

回答

0

我可能在這裏沒有標記,但它看起來像我的動畫程序只是setNeedslayout,這將導致屏幕立即重繪。你需要改變一些UIView的動畫參數,以便看到某些動作。像self.view.frame,也許。 UIView的動畫特性列表爲here

0

嘗試在動畫關閉與self.view.layoutIfNeeded()

@IBAction func onDo(sender:UIButton) { 
    self.testConstraint.constant = 40.0 

    UIView.animateWithDuration(2.0, animations: {() -> Void in 

     self.view.layoutIfNeeded() 

     }) { (complete:Bool) -> Void in 

    } 
}