接口构建器中的nslayoutconstraints在Uiview中使用5个标签



我认为我对这些新约束有一个基本问题。

想象一下,您将5个标签都放在Uiview中的上下。顶部标签在视图的顶部和下面的下一个标签之间都相同。然后每个标签也相同间隔。

我想发生的事情是,当uiview高度少或更多时,每个标签之间的空间平均更改?

我应该做什么。我是否应该在视图中垂直将第三个标签垂直居中,然后从中心添加约束,还是将1和2限制在视图的顶部,3中心和4和5到底部?

事先感谢您的所有建议。

编辑:添加了以下答案后,我已经在接口构建器中进行了限制,虽然我不是100%确定我已经回答了它。

在所有标签之间,我都有一定的距离。但是我也有一定的最小距离,例如遵循苹果的热情,我认为标签之间是15。因此,我的位于30岁,我设置了一个大于或等于15的约束。现在,iOS在监管变化时对我的所有移动都从30到15。

我最初是用按钮做到的,而我可以进行此工作的唯一方法可以自动调整到视图框架大小(旋转)是添加标签(没有文本,因此它们在每个按钮之间以及包含视图与第一个和最后一个按钮之间都不可见。这些按钮都具有固有的尺寸,标签没有,因此它们可以自由更改高度以填补空间。我修改了使用所有标签的代码," B"标签是带有文本的标签。

-(void)viewDidLoad {
    [super viewDidLoad];
    NSMutableDictionary *viewsDict = [NSMutableDictionary dictionary];
    for (int i=1; i<5; i++) {
        UILabel *b = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 150, 44)];
         b.text = @"This is my label";
        [b setTranslatesAutoresizingMaskIntoConstraints:NO];
        [viewsDict setObject:b forKey:[NSString stringWithFormat:@"b%d",i]];
    }
    for (int i=1; i<6; i++) { // these are the spacer labels
        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)]|"
                                                                   options:NSLayoutFormatAlignAllLeading
                                                                   metrics:nil
                                                                     views:viewsDict];
    NSArray *constraints2 = [NSLayoutConstraint constraintsWithVisualFormat:@"|-[b1]"
                                                                   options:0
                                                                   metrics:nil
                                                                     views:viewsDict];

    [self.view addConstraints:constraints];
    [self.view addConstraints:constraints2];
} 

这将产生具有标准空间的均匀间隔标签,位于视图的左边缘。

最新更新