2013-04-23 99 views
1

我想了解和使用Xcode的約束功能。我可以看到,如果你是一些觀點,它是如何真正有用的,因爲你可以真正地指定每個人應該如何對齊自己。但是,如果你有很多觀點,這將變成一項單調乏味的工作,尤其是如果你以編程方式開始搞亂它們(比如移動它們)。例如下面的圖片:Xcode約束?

The view

我希望它看起來像這樣的時候我擴大和縮小畫面,但很可惜,事實並非如此。此外,由於他們不斷調整爲彼此相鄰,如果我以編程方式移動其中一個(如我在製作遊戲),另一個會無意中隨之移動。

所以基本上,當我在屏幕上顯示相當多的視圖對象並將它們移動到代碼中時,我該如何處理約束?任何提示都非常感謝! (是的,我曾嘗試每次添加/刪除每個視圖的約束,首先,這是一項乏味的任務,其次,它不斷增加視圖的約束以使它們彼此對齊,而且您很少希望在你移動它們的遊戲中)。

在此先感謝!

回答

0

您可以嘗試更新約束,而不是一直刪除和添加它們。 您可以創建IBOutlets您需要更改的所有約束,然後你可以通過改變constant

[self.heightConstraint setConstant:newValue]; 

然後你需要調用[self layoutIfNeeded],可能是在一個動畫塊,看到更新後的變化進行更新限制:

[UIView animateWithDuration:0.5 animations:^{ 
    [self layoutIfNeeded]; 
}]; 

我真的不知道你的應用程序的細節,但也許如果你想從意見如何相互關聯的角度約束,也許移動它們就不會那麼難。

另一個想法是在UIView子類中將視圖組合在一起。也許像RowView那樣具有3個圖像並且僅爲那些處理約束。

我的意思是像「分而治之」,不是在一個視圖中處理所有約束,而是將它們組合在一起,這對您的應用程序來說是合理的。

希望這會有所幫助!祝你的項目好運。