不要在我的 UIView 上指定宽度和高度约束(就像 UILabel 可以做的那样)

Posted

技术标签:

【中文标题】不要在我的 UIView 上指定宽度和高度约束(就像 UILabel 可以做的那样)【英文标题】:Don't specify width & height constraints on my UIView (like UILabel can do) 【发布时间】:2015-08-09 16:28:55 【问题描述】:

如果我在视图中放置一个 UILabel 并指定一个垂直空间约束和一个水平空间约束,就可以了。

如果我对自定义 UIView 执行相同操作,IB 会抱怨,因为它缺少高度和宽度限制。

我猜这是因为 UILabel 可以垂直和水平扩展。但是我的自定义 UIView 也是如此,那我怎么知道我的视图有这样的权限呢?

【问题讨论】:

请说明如何添加垂直和水平空间限制。我认为您出于某种原因没有将它们添加到您的标签和视图中。 @dasdom :我只需按住 ctrl 键从我的标签拖动到它的超级视图,然后选择“顶部空间到容器”和“前导空间到容器” 【参考方案1】:

UILabel 的默认行为是“适合内容”(编辑器-> 适合内容)。这意味着 UILabel 将随着给定字体大小的 Content 增加而增长。要让视图定位自身,它需要 X、Y、宽度和高度。宽度和高度由它包含的文本给出。休息您已经提供的两个属性。我希望这能回答你的问题。

【讨论】:

以上是关于不要在我的 UIView 上指定宽度和高度约束(就像 UILabel 可以做的那样)的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将自动布局约束添加到恒定宽度和高度的子视图

UIView 事件应用约束并设置子视图宽度

单元格中的破坏约束

实现一个在autolayout下有宽度约束后,自动确定高度的view

iOS 纵横比约束在 iOS 7 上中断,适用于 iOS 8

UIView 不会改变 Rotate 的宽度和高度