ios uiview自动扩展尺寸
问题描述:
我有一个UIView
宽度/高度为0/0。当我添加subviews
到我的UIView
,有没有办法让宽度和高度自动更新?ios uiview自动扩展尺寸
例如 如果我添加了10
子视图,每个子视图的宽度为50
,那么我希望我的UIView
的宽度为500
。
答
我没有遇到任何这样的功能,它会自动执行。您必须通过计算其子视图的位置和大小来设置框架。
答
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的宽度/高度以适合所有子视图。
答
是的,UIView可以做到这一点。我最近遇到了这个问题,这里是我的解决方案。
假设你有一个UIView和其中的10个子视图。您必须为子视图设置约束,以便外部UIView能够知道它的大小。
例如,您想垂直布局10个子视图。约束将是
- 第1子视图具有与外界的UIView
- 第2子视图具有与第1子视图上边距约束上边距约束。
- 第3个子视图具有与第2个子视图相关的顶部边界约束。
- 依此类推......
- 第10个子视图有与第9个子视图相关的顶部边界约束。
- 而最重要的是,
the 10th subview must have bottom margin constraint related to the outside UIView
。
为了满足上面的约束条件,外部UIView必须有一个高度自动包装4个子子视图。