如何使用自动调整大小和自动布局并更改其默认行为? [关闭]

Posted

技术标签:

【中文标题】如何使用自动调整大小和自动布局并更改其默认行为? [关闭]【英文标题】:how to use autoresizing and autolayout and change its default behaviour? [closed] 【发布时间】:2013-04-17 04:07:59 【问题描述】:

我有一个父视图作为 Scrollview。我在该滚动视图上添加了两个子视图 view1、view2。 但我需要同时执行以下操作

    当我在运行时增加其中一个子视图 view1 的高度时,应使用自动布局或自动调整大小来更改父视图高度

    当我在运行时增加其中一个子视图 view2 的高度时,父视图高度不应更改自动布局或自动调整大小

    当我及时改变父视图的高度时,它应该不会影响它的子视图。

有什么帮助吗?

【问题讨论】:

什么函数或方法在改变view1的高度?为什么不让该函数也调整滚动视图的大小? 自动调整大小不支持复杂(甚至许多简单)的情况。如果您的主视图是自定义视图,则覆盖 layoutSubviews 并根据需要调整框架。如果你的主视图是视图控制器视图,你可以在视图控制器中覆盖viewWillLayoutSubviews 此外,自动调整大小永远不会根据子视图框架的变化来调整超级视图的大小。它仅根据父视图框架的更改来更改子视图的框架。您不能按照您的要求进行自动调整大小。也许你在谈论自动布局,它是在 ios 6.0 中添加的。 【参考方案1】:

在自动布局中:

在view1 和superview 的上边界之间建立一个最小距离。 在 view1 和 superview 的底部边框之间建立固定(最小)距离。 为 view2 忽略这些最小距离。

【讨论】:

【参考方案2】:

无需使用 -layoutSubviews。当增加子视图 view1 的高度时,您可以更新滚动视图的内容大小。当增加子视图 view2 的高度或滚动视图的高度时,什么都不做。

【讨论】:

以上是关于如何使用自动调整大小和自动布局并更改其默认行为? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

iOS 故事板 - 自动布局不会调整子视图的大小和位置

使用自动布局中的固有大小动态调整 UICollectionView 的大小

如何调整 Core Data 默认缓存的行为或大小?

自动布局根据文本调整按钮大小并让文本字段填充可用空间

如何使 QListWidgetItem 根据其内容自动调整大小,并适合其 QListWidget

只想使用自动布局调整中间视图的大小