iOS自动布局可视化格式-对齐

3

在iOS6中,我正在使用自动布局。

  • 我创建了两个视图v1和v2。
  • v2被添加为v1的子视图。
  • v1的约束已经在编程时创建(未在此处显示)。
  • 我希望v1和v2的大小相同,并且我希望v2被放置在v1的正上方,水平和垂直居中匹配,使v2正好位于v1的正上方。

问题:

  • 如何实现这一点(最好使用可视化格式,如果不可能,请建议其他方法)?

代码 - 下面是我的尝试,但它没有提供所需的输出。-没有错误抛出。V1被正确放置,但V2在V1的左上角。

注意 - 我在注释中解释了我要做什么。

[v1 addSubView:v2];

v1.translatesAutoresizingMaskIntoConstraints        = NO;
v2.translatesAutoresizingMaskIntoConstraints        = NO;

NSDictionary *viewDictionary = NSDictionaryOfVariableBindings(v1,
                                                              v2);

//I wanted v1 and v2 to be of the same height and wanted the center Y to be aligned together
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[v2(==v1)]"
                                                                         options:NSLayoutFormatAlignAllCenterY
                                                                         metrics:nil
                                                                           views:viewDictionary];


//I wanted v1 and v2 to be of the same height and wanted the center X to be aligned together
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[v2(==v1)]"
                                                                       options:NSLayoutFormatAlignAllCenterX
                                                                       metrics:nil
                                                                         views:viewDictionary];

[v1 addConstraints:horizontalConstraints];
[v1 addConstraints:verticalConstraints];
1个回答

2

这个难道不应该有效吗?

NSMutableArray *constraints = [NSMutableArray new];

constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"|[v2]|"
                                                                        options:0
                                                                        metrics:nil
                                                                          views:NSDictionaryOfVariableBindings(v2)];
constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[v2]|"
                                                                        options:0
                                                                        metrics:nil
                                                                          views:NSDictionaryOfVariableBindings(v2)];
[v1 addConstraints:constraints];

这个操作使得v2的高度和宽度会被拉伸到其父视图(在这种情况下是v1)的大小,并将其定位在其父视图的正上方。
看起来在你的情况下,你不需要对视图进行水平和垂直居中对齐。否则,我可能没有正确理解你问题的背景。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接