UIView 不自动调整子视图

Posted

技术标签:

【中文标题】UIView 不自动调整子视图【英文标题】:UIView not autoresizing subview 【发布时间】:2013-04-21 05:22:34 【问题描述】:

我有一个 UIView a 启用了 autoresizing subviews。它的大小是:

 <UIView: 0x7650180; frame = (0 0; 320 394); clipsToBounds = YES; autoresize = LM+RM+H; layer = <CALayer: 0x7650230>>

我有另一个 UIView b 添加到视图 a。查看b 具有灵活的宽度/高度。当我添加它时,我希望它的高度会变为394,但它仍然与笔尖中的相同(420):

<UIView: 0x764f720; frame = (0 0; 320 460); autoresize = LM+W+RM+TM+H+BM; layer = <CALayer: 0x764f320>>

我做错了什么?

谢谢

【问题讨论】:

【参考方案1】:

子视图的自动调整大小仅适用于已添加到父视图的子视图。你应该怎么做:

    创建父视图。 添加子视图。 为它们设置自动调整大小的蒙版。 调整父视图的大小。

只有这样您才会看到子视图正在自动调整大小。

调整大小后添加子视图将无效。

【讨论】:

【参考方案2】:

自动调整大小仅在父视图的框架发生更改时影响子视图。如果您希望子视图与父视图具有相同的高度,则必须在将其添加为子视图之前或之后将高度设置为相等。

【讨论】:

以上是关于UIView 不自动调整子视图的主要内容,如果未能解决你的问题,请参考以下文章

创建一个基于 UIView 的子视图自动调整大小的视图

在不自动调整大小的情况下确定 UIView 容器大小

使用自动调整子视图大小为 UIView 帧大小更改动画

UIView 子视图不是为 iPad 自动旋转或自动调整大小

使用自动布局调整同级视图的大小时,使用子视图重新定位 UIView 不起作用

根据子视图大小调整 XIB 中的 UIView 大小