ios uiview 自动展开尺寸

Posted

技术标签:

【中文标题】ios uiview 自动展开尺寸【英文标题】:ios uiview auto-expand dimensions 【发布时间】:2012-03-02 17:26:13 【问题描述】:

我有一个宽度/高度为 0/0 的 UIView。当我将subviews 添加到我的UIView 时,有没有办法让宽度和高度自动更新

例如 如果我并排添加10 子视图,每个子视图的宽度为50,那么我希望我的UIView 的宽度为500

【问题讨论】:

【参考方案1】:

UIView 的sizeToFit 将调整您的视图大小,使其足以容纳其中的所有内容。

但是...这非常依赖于您添加到视图中的子视图。添加视图很简单:

[myView addSubview:innerView];

内部的frame 有很大的不同。

如果您添加 10 个 x/y 原点为 0/0 且宽度/高度为 0/0 的子视图,那么 sizeToFit 会说您需要您的视图需要 0/0 的宽度/高度来适应所有子视图。

如果您添加 1 个 x/y 原点为 10/10 且宽度/高度为 5/5 的子视图,则 sizeToFit 说您需要 15/15 的宽度/高度来适应所有子视图。

【讨论】:

【参考方案2】:

我没有遇到任何可以自动执行此操作的功能。您必须通过计算其子视图的位置和大小来设置框架。

【讨论】:

【参考方案3】:

是的,UIView 可以做到这一点。我最近遇到了这个问题,这是我的解决方案。

假设你有一个 UIView 和 10 个子视图。您必须为子视图设置约束,以便外部 UIView 知道它的大小。

例如,您想垂直布局 10 个子视图。限制条件是

第一个子视图具有与外部 UIView 相关的上边距约束 第二个子视图具有与第一个子视图相关的上边距约束。 第三个子视图具有与第二个子视图相关的上边距约束。 等等…… 第 10 个子视图具有与第 9 个子视图相关的上边距约束。 最重要的是,the 10th subview must have bottom margin constraint related to the outside UIView

为满足上述约束,外部 UIView 必须具有自动包裹 4 个子子视图的高度。

【讨论】:

以上是关于ios uiview 自动展开尺寸的主要内容,如果未能解决你的问题,请参考以下文章

屏幕旋转后获取自动旋转 UIView 的尺寸?

ios4--UIView的常见属性(尺寸和位置)

从 XIB 加载 UIView 大小不正确

如何使用自动布局为 UIView 提供两种尺寸(适用于 iPhone 和 iPad)?

自动布局 - 使视图的尺寸依赖于另一个视图的

如何根据动态内容和最大尺寸限制折叠/展开视图?