前提
我有一个superview C,它只包含两个子视图A和B. ASCII艺术:
+-----------+
| view A |
| view B |
+-----------+
这就是我想要的:
A的顶部必须固定在C的顶部。 A的高度不固定在任何东西上;它实际上会根据其内容而改变:它是一个无滚动视图的NSTextView
。
B的顶部必须始终距离A的底部10个像素。 B的底部必须始终固定在C的底部。
整个视图C应该在A和B之间分开,A和B之间的划分必须由A的当前高度(由NSTextView
决定)决定,B应该填充任何A未占用的剩余空间。
换句话说:A停留在顶部。 B填写其余的超级视图。随着A的增长,B被推向下方。
问题
Interface Builder始终创建不可删除的约束,使B的顶部位于C顶部。这意味着B将始终位于特定的Y位置。如果我给B一个高度约束,这不会发生,但这不是我想要的。
我已尝试实施superview的updateConstraints
来删除此IB生成的约束。这样的作品,但是当我这样做时,B的顶部从未调整过,似乎是任意设定的。我设置约束优先级并不重要,B最终定位在C的底部,或顶部,或远离屏幕的某个地方。此外,A似乎越来越多地填满了整个C.
这是我无法摆脱的自动创建的约束:
其他详情
我应该补充一点,C是基于视图的NSTableView
中的单元格视图。我计算了tableView:heightOfRow
中适合A和B的所需高度,并期望将约束放在一边。
答案 0 :(得分:1)
后代的答案:有一个像所描述的配置显然不可能有约束。到目前为止,我的解决方案有效:
NSTableView
中触发奇怪的行为。)constraint.constant
属性进行设置。constraint.constant
属性进行设置。