界面生成器约束

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 或具有使其具有明确高度的约束(例如,如果它包含固定在顶部和底部的UILabelUIImageView),那么这足以适当地调整查看。

【讨论】:

【参考方案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;

【讨论】:

以上是关于界面生成器约束的主要内容,如果未能解决你的问题,请参考以下文章

界面生成器中的约束“宽度等于高度”,对于同一视图:如何创建这样的约束?

在界面构建器中使用约束

如何在界面生成器中正确约束图像

更新 Xcode 中的框架和约束(界面生成器)

界面生成器中带有空 UIStackView 的 UIScrollView 的约束错误

界面生成器中的自动布局