2014-01-14 16 views
2

我創建的代碼(沒有XIB或故事板這一個)視圖並在代碼中設置的限制,如:更改設定NSLayoutConstraint編程後

NSDictionary *bindings = NSDictionaryOfVariableBindings(_myView); 
_myView = [[UIView alloc] init]; 
[self.view addSubview:_myView]; 
_myView.translatesAutoresizingMaskIntoConstraints = NO; 
[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_myView]-0-|" options:0 metrics:nil views:bindings ] ]; 
[self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_myView(25)]" options:0 metrics:nil views:bindings ] ]; 

在另一種方法後來我想改變_myView的位置,並動態改變。

我的問題: 改變設置約束的最佳/正確方法是什麼? 我不知道如何改變X和Y領域。例如。我將這兩個值都設置爲0,並且我想將X和Y更改爲50.

回答

1

約束與其他任何對象一樣,如果稍後要更改屬性。

@property (nonatomic, strong) NSLayoutConstraint *centerConstraint; 

然後將其設置爲特定約束,將其添加到視圖中,然後可以刪除並稍後重新添加它。

+0

好的謝謝。這是唯一合適的方式嗎?當我有例如10個UIViews,每個視圖有2個約束,我想要更改,然後我必須定義20個約束屬性... – Sebastian

+1

您可以使用一個約束數組的屬性,並使用'-addConstraints:'添加和刪除等。您可以隱藏添加一個方法並調用它。無論哪種方式,自動佈局只是冗長的。 –