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个子子视图。