0

我想建立这样的界面: 在此处输入图像描述

在禁用自动布局的情况下,我成功创建了这 6 个按钮,并通过代码根据屏幕高度对它们进行了很好的调整。但是,当禁用自动布局时,所有其他控制器变得“混乱”,所以我尝试创建/调整启用自动布局的那些按钮。并且没有办法在启用自动布局的情况下实现这样的界面。我的问题是,在启用自动布局的情况下调整这 6 个按钮是否有任何技巧和解决方案?或者也许有一个图书馆?我真的很累。谢谢您的帮助。

4

2 回答 2

2

我看到您找到了答案,但无论如何我都会发布我的答案,因为它使用了不同的方法。当 6 个按钮之间存在如此多的依赖关系时,尝试在 IB(在 iOS 6 中)中获得正确的约束是很困难的(因为系统在 IB 中为您添加了约束),所以我在代码中做到了。我这样做的方式是,按钮以任何尺寸的屏幕或任何方向占据整个屏幕,而无需检查屏幕尺寸:

@interface ViewController ()
@property (strong,nonatomic) NSMutableDictionary *viewsDict;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.viewsDict = [NSMutableDictionary dictionary];
    for (int i=1; i<7; i++) {
        UIButton *b = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [b setTitle:[NSString stringWithFormat:@"Button%d",i] forState:UIControlStateNormal];
        [b setTranslatesAutoresizingMaskIntoConstraints:NO];
        [self.viewsDict setObject:b forKey:[NSString stringWithFormat:@"b%d",i]];
        [self.view addSubview:b];
    }

    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[b1][b2(==b1)]|" options:0 metrics:nil views:self.viewsDict]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[b3][b4(==b3)]|" options:0 metrics:nil views:self.viewsDict]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[b5][b6(==b5)]|" options:0 metrics:nil views:self.viewsDict]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[b1][b3(==b1)][b5(==b1)]|" options:0 metrics:nil views:self.viewsDict]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[b2][b4(==b2)][b6(==b2)]|" options:0 metrics:nil views:self.viewsDict]];
}
于 2013-07-30T20:13:20.287 回答
0

使用自动布局,您肯定希望将这六个视图包装在另一个 UIView 中,以防止按钮和其他视图之间的布局交互。如果那个 UIView 有一个固定的高度和宽度,它可能就这么简单。

于 2013-07-30T15:09:22.760 回答