ios自动布局视觉格式-对齐
Posted
技术标签:
【中文标题】ios自动布局视觉格式-对齐【英文标题】:ios autolayout visual format - alignment 【发布时间】:2012-10-02 17:28:16 【问题描述】:在 ios6 中,我使用的是自动布局。
我有 2 个视图 v1 和 v2 以编程方式创建。 v2 作为子视图添加到 v1 v1 的约束已经以编程方式创建(此处未显示)。 我希望 v1 和 v2 具有相同的大小,并且我希望将 v2 放置在 v1 的顶部,使其水平和垂直中心完全匹配,以便 v2 正好位于 v1 的顶部问题:
我怎样才能做到这一点(最好使用视觉格式,如果不可能,您能否建议其他方法)?代码 - 下面给出了我的尝试,但它没有提供所需的输出。 - 没有抛出错误。 V1 放置正确,但 V2 是 V1 的左手角之一
注意 - 我已经在下面的 cmets 中解释了我要做什么。
[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】:不应该只这样工作吗?
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 并将其定位在其父视图的正上方。
在您的情况下,您似乎不需要对齐视图 centerX 和 centerY。否则,我无法正确理解您的问题的上下文。
【讨论】:
以上是关于ios自动布局视觉格式-对齐的主要内容,如果未能解决你的问题,请参考以下文章
ios自动布局视觉格式设置子视图与父视图大小相同,但垂直偏移