2015-03-02 111 views
3

我們可以改變NSLayoutConstraint的常量屬性,並且比使用UIView動畫塊更改動畫。ios:自動佈局動畫,如何防止子視圖被動畫?

myLayoutConstraint.constant = 50; 
[UIView animateWithDuration: .3 animations:^{ 
    [view layoutIfNeeded]; 
}]; 

但是,具有佈局約束作爲其超視圖的視圖的子視圖將會生成動畫!它們將從原始零框架動畫到自動佈局的目標框架。如何解決這個問題呢?

回答

7

這表明您有掛起的佈局操作。呼叫layoutIfNeeded一旦

myLayoutConstraint.constant = 50; 
0

如果子視圖具有取決於動畫約束限制之前則沒有,這是不可能的。

你可以做的是讓子視圖的約束獨立於動畫約束。

因此,如果您要動畫預覽的高度,那麼不要將子視圖釘在其超級視圖的頂部和底部,因爲這會使它們在動畫時發生變化。只能將它們固定在頂部,以便它們從底部「掉落」。

這種方式當高度動畫時,它會顯示子視圖,而不會動畫它們。