gpt4 book ai didi

ios - 在 3.5” 和 4” 显示器上均匀排列 UIButton

转载 作者:行者123 更新时间:2023-11-29 13:18:22 25 4
gpt4 key购买 nike

我现在花了很多时间弄清楚 - 自动布局以及如何使用它,但还没有找到如何解决这个问题的答案。

我的问题是我想对齐,例如5 个垂直放置的 UIButtons 均匀地分布在 iPhone 5 和之前的显示器上,但是有没有一种方法可以使用 Interface Builder 来完成,或者应该在代码中完成。当我希望按钮之间的垂直距离相对于屏幕分辨率(3.5 英寸和 4 英寸显示屏)均匀时。

我曾尝试在按钮之间添加垂直约束,但如果选择 4"显示,这只会在布局的顶部或底部添加一个间隙。

我当然遗漏了一些简单的东西,但无法弄清楚。

最佳答案

我让它工作的唯一方法是在边缘和按钮之间放置标签(没有标题,所以它们是不可见的),这样按钮和标签就占据了所有垂直空间屏幕。按钮具有固有尺寸,但标签没有,因此它们会扩展或收缩以正确填充空间。

-(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 点,按钮之间的间距相等。这将根据屏幕尺寸和旋转进行调整。

关于ios - 在 3.5” 和 4” 显示器上均匀排列 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15054823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com