【问题标题】:Interface Builder Constraints界面生成器约束
【发布时间】:2015-06-11 15:07:59
【问题描述】:
我正在尝试在界面生成器中创建这样的布局。
我正在使用约束来使这些视图可伸缩。
顶视图的左、右和顶部空间绑定到超级视图,底部空间绑定到底部视图。
底部视图的左右和底部空间绑定到superview。
在运行时,我将 ViewController 视图添加到它们。
这里的问题是底视图Y没有约束,IB显示红色错误箭头等等。那是因为我不知道它的确切高度。黄色视图是否有任何“android wrap_content”约束,其高度等于运行时添加的内部视图?
【问题讨论】:
标签:
ios
objective-c
view
constraints
【解决方案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;