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

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

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

【问题讨论】:

    标签: ios uiview subview


    【解决方案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 个子子视图的高度。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-29
          • 1970-01-01
          • 2021-02-02
          • 1970-01-01
          • 1970-01-01
          • 2016-09-14
          • 2020-09-14
          • 1970-01-01
          相关资源
          最近更新 更多