我需要UIButton
小號靈活地這樣定位在垂直列表:如何靈活地在表格中定位UIbuttons?
A
B
C
D
的問題是它需要靈活,當B丟失它應該看起來像這樣的:
A
C
D
所以應該沒有空格,但UIButton
s應該向上移動
現在我通過編程方式定位UIButton
這樣,但是這隻在iOS7中可行,如果我打開Autolayout
off
但是,這反過來又需要將所有其他元素 - 尤其是屏幕的底部 - 也以編程方式放置,這是我不想做的。
如何以這種方式定位UIButton
s,而無需以編程方式以編程方式將所有其他元素定位在屏幕上。
在Android中有tablelayout
或linearLayout
,它會自動處理!
編輯:
這都是一個很大的痛苦,但這是它是如何工作的:
- 放置所有的btns很好左對齊,下對方這樣你就可以很好地看到他們在IB 。在這個階段,垂直間距並不重要,因爲我們刪除了由IB創建的所有這些約束,並且以編程方式添加了我們稍後想要的垂直間距
- 確保現在只有您想要的約束以及由IB創建的沒有約束你不想要。
- 特別是要刪除所有你想要以編程方式重新定位的btns之間的垂直間距約束。通過點擊灰色彈出框中的「添加約束」,將您想要的約束添加到IB中。之後,不要再觸摸你的佈局 - 你可以輕鬆搞定!
- 使用此代碼重新定位現在A相對於C例如。不要忘了集B隱形
UIView *superview = self.view;
NSMutableArray *mutableConstraintsArray =[[NSMutableArray alloc]init];
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:A
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual toItem:C
attribute:NSLayoutAttributeTop multiplier:1.0 constant:-20.0];//C is 20 points under A
[mutableConstraintsArray addObject:constraint];
for (int i = 0; i<mutableConstraintsArray.count; i++) {
[superview addConstraint:mutableConstraintsArray[i]];
}
我用mutableConstraintsArray
在這裏,所以我可以在這個時候添加multuple限制!
很多努力恕我直言!
如果有更簡單的方法,請更正/改善!
非常感謝馬特指示我在正確的方向。
謝謝 - 請給出一個工作示例如何將這樣的約束添加到UIButton B和D,例如請... – user387184
它可能有助於閱讀關於NSLayoutConstraint的文檔。或者[我的書](http://www.apeth.com/iOSBook/ch14.html#_autolayout)的這一部分... – matt
此處還有一些代碼,其中我以編程方式創建了具有自動佈局約束的標籤:https: //github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch07p362scrollViewInCode2/ch20p670scrollViewInCode2/ViewController.m – matt