在 UIScrollView 中调整视图大小后,滚动视图不知道它改变了

Posted

技术标签:

【中文标题】在 UIScrollView 中调整视图大小后,滚动视图不知道它改变了【英文标题】:After resizing view inside UIScrollView, the scroll view does not know it changed 【发布时间】:2011-08-29 15:40:15 【问题描述】:

我调整了放入 UIScrollView 的视图大小,但滚动视图不知道大小发生了变化。

所以,我尝试删除视图并将其重新添加到 UIScrollView,但这没有帮助。

如何让 UIScrollView 相信它的内容已经改变了大小?

谢谢。

【问题讨论】:

您尝试重置@property(nonatomic) CGSize contentSize 吗? 【参考方案1】:

您是否记得将 UIScrollView 的内容大小(使用 [scrollview setContentSize:])设置为新大小?滚动视图无法自行计算,您必须告诉它其内容的大小。

【讨论】:

事实上,我确实忘记了这一点,当我这样做时,它解决了问题。谢谢。【参考方案2】:

如果滚动视图是另一个视图的子视图并且您调整了该视图(滚动视图的父视图)的大小,除非您设置了父视图的autoresizesSubviews 属性,否则滚动视图实际上不会调整大小。您还必须设置滚动视图的autoresizingMask。

如果你更喜欢手动布局子视图(仍然假设滚动视图是某些父视图的子视图),你可以在父视图中实现layoutSubviews 来改变子视图的大小/位置,当父视图更改。

【讨论】:

以上是关于在 UIScrollView 中调整视图大小后,滚动视图不知道它改变了的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式添加内容后调整 uiscrollview 的大小

UIScrollView 不使用自动布局约束

在 UIScrollView 中自动调整 UITextView 的大小

在 UIScrollView 中自动调整 UITextView 的大小

调整滚动视图框架的大小时,UIScrollView 子视图的大小调整不正确

视图转换后调整 UICollectionView 的大小