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 自动展开尺寸的主要内容,如果未能解决你的问题,请参考以下文章