我遵循视觉格式约束
@"|-(0)-[[view0]-(5)-[view1(view0)]-(5)-[view2(view0)]-(5)-[view3(view0)]-(0)-|"
视图的数量很大,为简单起见,我们只考虑3个视图
使用上述约束我将视图设置为具有相同的宽度。 但也需要为视图设置具有相同的高度!
有没有办法在上面的约束中指定视图的宽度和高度是否相同?
我知道可以将视图的约束设置为具有相同的高度
@"V:[view1(view0)]
和@"V:[view2(view0)]
,但我想只有一个视觉约束字符串。
欢迎任何建议/参考!
答案 0 :(得分:2)
不幸的是答案是 no ,你不能在同一个视觉布局字符串中混合高度和宽度。我将在下面解释原因。
首先,这是Auto Layout Visual Format Language的链接。这定义了-[NSLayoutConstraint constraintsWithVisualFormat:options:metrics:views:]
的有效字符串。
从该参考页面,我们看到有效的可视格式字符串定义为:
(<orientation>:)?
(<superview><connection>)?
<view>(<connection><view>)*
(<connection><superview>)?
定位是我们感兴趣的。从上面的定义,我们可以在可视格式字符串的开头设置方向。还有其他地方我们可以设定方向吗?不会向下钻取其他符号(<superview>
,<connection>
和<view>
),符号<orientation>
不会再次出现。
现在让我们看看符号<orientation>
。它被定义为:
H|V
表示您可以将<orientation>
替换为H
(水平)或V
(垂直)。
这意味着
(<orientation>:)?
是(H:)?
或(V:)?
?
字符表示您可以包含括号中包含的0或1。这为(<orientation>:)?
提供了三种可能性:H:
,V:
或任何内容(相当于H:
)。
如图所示,在可视格式字符串中只有一个地方可以设置方向,并且可以将其设置为水平或垂直,而不是两者。这意味着您只能在一个可视格式字符串中设置高度或宽度。