我在容器视图中水平并排放置了两个视图。它们相距8点,但宽度可变。我想保持两个视图的中心等于容器视图的中心,这样无论容器的大小如何,两个视图一起位于屏幕的中心。
我的想法是创建两个水平约束,一个从容器的左边缘到第一个对象的左边缘,第二个对象的右边缘到容器的右边缘。然后我会使这两个约束彼此相等,但随容器的大小而变化。不幸的是,我找不到办法做到这一点。我只能弄清楚如何使约束等于或大于/小于特定值。有没有办法做到这一点?
答案 0 :(得分:0)
即时思考,您是否尝试将左视图赋予其超级视图一个主要约束,为右视图提供一个尾随约束,然后给予两个水平间距约束和相等宽度约束?
答案 1 :(得分:0)
如果你想要这样的东西:
[ <- equal -> <- equal -> ]
[ [view1] [biggerview2] ]-- resizable superview, fixed-width views
视图之间有8px,然后:
view1.trailing = superview.centerX - 4
biggerview2.leading = superview.centerX + 4
和其他明显的限制如:
view1.leading >= default
view1.width > 0
superview.trailing >= biggerview2.trailing + default
biggerview2.width > 0
...
答案 2 :(得分:0)
您应该可以在IB中执行此操作。
创建宽度为1的空视图,并设置水平约束以将其放置在容器的中心。这是一个占位符。
相对于此中心占位符视图设置两个视图的约束:
左视图应该对占位符前沿有尾随约束。
右视图应该对占位符后端具有前导约束。
调整这两个约束的常量,以获得左视图和右视图之间所需的间距。
答案 3 :(得分:0)
只需将两个视图嵌入到容器视图中即可。设置约束,以便容器紧密拥抱两个视图。然后,将容器视图置于其超视图中心。
答案 4 :(得分:0)
是的,有一种方法: 你有超级视图,其中有2个子视图(你希望50:50到superview宽度): 您需要从子视图到superview的连接宽度约束(相等宽度),并将此约束的乘数从1更改为0.5(您还可以使用语法1:2(或3个子视图的1:3))。 你也可以在那里设置常量值来设置填充:
以下是示例:
子视图与superview的比例宽度为2:1,填充为32为常量(每边16个)
所以计算得像(适用于iPhone 4S屏幕)(320宽度 - 32常量)/ 2 =子视图宽度
您还可以对3,4,5个子视图执行相同操作,以创建更复杂的视图。 这是与我的另一个例子的链接:https://dl.dropboxusercontent.com/u/48223929/AutolayoutExampleView.xib