2017-05-19 102 views
1

我有一個UIView,我正在初始化,以100%的視角右側開始「離屏」。我通過以下方式執行此操作:動畫自動佈局`leftAnchor`約束變化

[childView.leftAnchor constraintEqualToAnchor: superview.rightAnchor 
            constant: 1.0].active = YES; 

然後,我想從左側「滑動」視圖。我想也許這樣做:

[UIView animateWithDuration: 5 
       animations: ^{ 
        [childView.leftAnchor constraintEqualToAnchor: superview.leftAnchor 
                   constant: 1.0].active = YES; 
       }]; 

可能會這樣做,但它會立即發生(沒有動畫,它只是'出現')。

是否可以使用自動佈局錨提供動畫?

回答

1
[childView.leftAnchor constraintEqualToAnchor: superview.leftAnchor constant: 1.0].active = YES; 
[UIView animateWithDuration: 5 
       animations: ^{ 
        [childView layoutIfNeeded]; 
       }]; 

這應該這樣做。約束更改本身不應位於動畫塊中,只是佈局調用。你也應該禁用/刪除你所做的初始約束,因爲這個新約束與它直接衝突(你可能會在你的控制檯中看到一個警告)。