3

使用自动布局时,调用 intrinsicContentSize 似乎是确定正确适合视图内容所需的 CGSize 的方法。

但是,此方法仅支持有限数量的现有 UIView。每当我制作自定义视图时,即使它像容器 UIView 内的 UILabel 这样简单,包含视图也无法确定其内在内容大小(返回 -1)。

我不明白为什么视图能够正确显示在屏幕上但视图甚至不知道它自己的高度......

容器视图中的 UILabel 是一个简单的示例,但我正在处理稍微复杂的 UIView,其中可能有 15 个视图相互嵌套。为了确定包含其所有子视图的视图的大小,我必须手动创建自己的 intrinsicContentSize 方法并做非常耗时的工作,我必须总结子视图的所有高度并添加所有的约束。这个过程很可怕。由于忘记添加子视图或约束之一的高度,很容易错过某处的高度。此外,动态子视图使事情变得更加复杂。例如,如果视图有2列动态子视图,则需要手动查找每列的子视图的高度+约束,比较这些高度并返回两者中较大的一个。同样,这是一个简单的例子,但通常不是那么简单,导致许多偏头痛。

回到我之前问的问题。iOS 如何显示视图却不知道视图有多高?必须有某种方法可以找出那个高度是多少。谢谢阅读。

这是一张有助于形象化我想要的图像。 图片

4

1 回答 1

-1

您的所有子视图都使用自动布局吗?我的意思是,如果您使用自动布局来放置 MyCompositeObject,那么该复合对象是否在内部使用约束来放置其许多对象?我发现如果是这样,那么intrinsicContentSize 将占所有子视图,但如果不是,你的UIView 的内在内容大小最终会返回一些不准确和小的东西。

于 2013-08-26T18:41:27.170 回答