我得到這個工作的唯一方法是在邊緣和按鈕之間放置標籤(沒有標題,因此它們是不可見的),以便按鈕和標籤佔用所有垂直空間屏幕。按鈕具有固有尺寸,但標籤不包含,因此它們會展開或收縮以正確填充空間。
-(void)viewDidLoad {
[super viewDidLoad];
NSMutableDictionary *viewsDict = [NSMutableDictionary dictionary];
NSArray *titles = @[@"Button 1",@"Button 2",@"Button 3",@"Button 4",@"Button 5"];
for (int i=1; i<6; i++) {
UIButton *b = [UIButton buttonWithType:1];
[b setTitle:titles[i-1] forState:UIControlStateNormal];
[b setTranslatesAutoresizingMaskIntoConstraints:NO];
[viewsDict setObject:b forKey:[NSString stringWithFormat:@"b%d",i]];
}
for (int i=1; i<7; i++) { // labels for spacing
UILabel *l = [[UILabel alloc ]init];
[l setTranslatesAutoresizingMaskIntoConstraints:NO];
[viewsDict setObject:l forKey:[NSString stringWithFormat:@"l%d",i]];
}
for (id obj in viewsDict.allKeys)
[self.view addSubview:viewsDict[obj]];
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[l1][b1][l2(==l1)][b2][l3(==l1)][b3][l4(==l1)][b4][l5(==l1)][b5][l6(==l1)]|"
options:NSLayoutFormatAlignAllLeading
metrics:nil
views:viewsDict];
NSArray *constraints2 = [NSLayoutConstraint constraintsWithVisualFormat:@"|-100-[b1]"
options:NSLayoutFormatAlignAllLeading
metrics:nil
views:viewsDict];
[self.view addConstraints:constraints];
[self.view addConstraints:constraints2];
}
這將所有按鈕從左邊緣對齊100個點,按鈕之間的間距相等。這將調整屏幕大小以及旋轉。
這可能只是幫助你做到這一點的方法之一http://stackoverflow.com/questions/13287047/naming-convention-for-iphone-5-images/13287481#13287481 – Popeye 2013-02-24 18:26:05
@Popeye以什麼方式做到這一點回答地址如何根據當前屏幕大小正確地佈置一組按鈕? – rmaddy 2013-02-24 18:30:44
@rmaddy這就是爲什麼我沒有把它作爲答案,因爲它只是在那裏的一半。本來希望他們能夠通過那裏自己來解決其他問題。但如果你想讓我爲你詳細說明。該鏈接提供瞭如何根據您可以獲得的屏幕大小,而不是代碼中您希望按鈕在屏幕上的佈局。我不是自動佈局的粉絲,因爲它從來不像你想要的那樣工作,所以我通常會建議爲每個人單獨進行佈局,直到它正常工作。 – Popeye 2013-02-24 18:34:59