2014-03-07 28 views
0

我正在嘗試使用Autolayout和約束來代替帶有框架的動畫。在我的項目中,我在屏幕的頂部附近有一個UIView,我試圖向下直線移動(y位置)。我知道我必須修改約束常量值,但這樣做會降低我的視圖的高度,而不是像我想要的那樣「向下推」它。這裏是我的代碼:Autolayout在不改變寬度/高度的情況下動畫製作UIView的x/y位置

self.topConstraint.constant = 180; 

[UIView animateWithDuration:0.5f animations:^{ 
    [self.theView layoutIfNeeded]; 
} completion:^(BOOL finished) { 

}]; 

topConstraint是視圖控制器的觀點和theView的頂部之間的垂直空間的限制。

theView其他制約包括:

  • 中心X對齊

  • 水平空間

  • 垂直空間(self.topConstraint

  • 垂直空間(表示theView之間的空間和ViewCo的底部ntroller的觀點)

  • 置頂寬度

  • 置頂高度

如何修改約束值簡單地改變theView位置而不影響其寬度/高度?

+0

該視圖還有哪些其他約束條件?是否將視圖的底部固定在其他位置? A> =高限制? – Wain

+0

是的,我忘了提及我試圖固定視圖的寬度和高度。我會更新解釋其他限制的問題。 – hgwhittle

回答

2

您應該刪除的約束:

垂直空間(代表theView和視圖控制器的視圖底部之間的空間)

,因爲你不想要的高度改變(你讓它固定),並且指定其他約束條件的x(中心約束)和y(其他約束條件)位置,因此不是必需的。

您的Horizontal Space約束也可能不是必需的(因爲您有一個Center X Alignment約束) - 水平空間可能是必需的,但更有可能是以此爲中心。

+0

這個技巧!我想我需要更好地理解需要什麼約束。謝謝。 – hgwhittle

相關問題