2015-09-08 83 views
5

的動畫我遷移我的代碼從雨燕1.2至2.0雨燕的iOS 9故障的UILabel

在雨燕1.2/iOS8上,動畫只是工作。但是在iOS 9中,它並沒有對它進行動畫處理,標籤立即改變位置,就好像從未調用過layoutIfNeeded一樣。

這是我如何爲我的UILabel製作一個UIButton的動畫。 (我用的自動佈局,這就是爲什麼我用layoutIfNeeded)

使用的UILabel(不工作)

titleLabelTopConstraint.constant = 88; 

UIView.animateWithDuration(0.8, delay: 0.38, usingSpringWithDamping: 0.54, initialSpringVelocity: 1, options: UIViewAnimationOptions.CurveLinear, animations: {() -> Void in 
     self.titleLabel.layoutIfNeeded(); 
     }, completion: nil); 

使用的UIButton(IT WORKS)

buttonTopConstraint.constant = 88; 

UIView.animateWithDuration(0.8, delay: 0.38, usingSpringWithDamping: 0.54, initialSpringVelocity: 1, options: UIViewAnimationOptions.CurveLinear, animations: {() -> Void in 
     self.button.layoutIfNeeded(); 
     }, completion: nil); 

但是如果我在UIButton上做同樣的工作!

有什麼想法?爲什麼UILabel不具有動畫性?

回答

6

嘗試增加:

self.titleLabel.setNeedsLayout(); 

動畫塊之前。

+0

它解決了它。但爲什麼? – JayVDiyk

+2

通常,當您更新視圖上的約束時,應讓iOS佈局系統通過使用setNeedsLayout方法知道約束已更改。這是蘋果的性能優化,因此他們不會嘗試不必要地佈置視圖。至於爲什麼它適用於UIButton,我不能肯定地說。 Apple可能會在UIButton實現中調用setNeedsLayout。 –

+0

謝謝。這解決了它。這隻發生在iOS9中。 – JayVDiyk