【问题标题】:What is the content compression resistance and content hugging of a UIView?什么是 UIView 的内容压缩阻力和内容拥抱?
【发布时间】:2014-05-01 04:47:40
【问题描述】:

什么是 UIView 的内容压缩阻力和内容拥抱?这些与视图的内在内容大小有何关系?

【问题讨论】:

标签: ios cocoa-touch uiview autolayout


【解决方案1】:

取自objc.io的优秀Advanced Auto Layout Toolbox article

内在内容大小

固有内容大小是视图希望显示的特定内容的大小。例如,UILabel 有一个基于字体的首选高度,以及一个基于字体和它显示的文本的首选宽度。 UIProgressView 仅具有基于其作品的首选高度,但没有首选宽度。普通的 UIView 既没有首选宽度也没有首选高度。

抗压性和内容拥抱

每个视图都有内容 抗压优先级和内容拥抱优先级 分配给两个维度。这些属性仅对 定义固有内容大小的视图,否则没有 定义的内容大小可以抵抗压缩或被拥抱。

幕后,内在内容大小和这些优先级 值被转化为约束。对于具有内在属性的标签 { 100, 30 } 的内容大小,水平/垂直压缩 750阻力优先,横向/纵向内容拥抱 优先级为 250,将生成四个约束:

H:[label(<=100@250)] 
H:[label(>=100@750)]
V:[label(<=30@250)]
V:[label(>=30@750)]

如果您不熟悉 上面使用的约束,您可以在 Apple 的 文档。请记住,这些额外的限制是 隐式生成有助于理解自动布局的行为并 更好地理解其错误消息。

这是另一个 StackOverflow 问题,解决了内容压缩阻力和内容拥抱之间的差异: Cocoa Autolayout: content hugging vs content compression resistance priority

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多