界面生成器约束
Posted
技术标签:
【中文标题】界面生成器约束【英文标题】:Interface Builder Constraints 【发布时间】:2015-06-11 15:07:59 【问题描述】:我正在尝试在界面生成器中创建这样的布局。
我正在使用约束来使这些视图可伸缩。 顶视图的左、右和顶部空间绑定到超级视图,底部空间绑定到底部视图。 底部视图的左右和底部空间绑定到superview。
在运行时,我将 ViewController 视图添加到它们。
这里的问题是底视图Y没有约束,IB显示红色错误箭头等等。那是因为我不知道它的确切高度。黄色视图是否有任何“android wrap_content”约束,其高度等于运行时添加的内部视图?
【问题讨论】:
【参考方案1】:为黄色视图的高度添加约束。然后为该约束添加一个 IBOutlet,以便您可以在运行时更改约束的 constant
值。如果需要计算满足黄色视图约束的大小,可以使用systemLayoutSizeFittingSize:
。
或者,您可以依赖黄色视图的intrinsicContentSize
。在 Interface Builder 中为视图添加占位符 Intrinsic Size。如果您的黄色视图实现了intrinsicContentSize
或具有使其具有明确高度的约束(例如,如果它包含固定在顶部和底部的UILabel
或UIImageView
),那么这足以适当地调整查看。
【讨论】:
【参考方案2】:只需在黄色视图中添加高度约束,例如:
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:self.yellowView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeHeight
multiplier:0.20f
constant:0.0f];
heightConstraint.active = YES;
【讨论】:
以上是关于界面生成器约束的主要内容,如果未能解决你的问题,请参考以下文章
界面生成器中的约束“宽度等于高度”,对于同一视图:如何创建这样的约束?