我已经为此苦苦挣扎了一段时间,以为自己想让我的scrollView成为一个插座,并尝试在viewDidLoad中设置内容大小,但这没有用。
然后,我尝试了viewWillAppear,再也没有运气了。毫无希望,我想我不妨尝试一下viewDidAppear,它确实有效。
在此之前,scrollView只会稍微滚动,并且不会考虑我在IB中的contentSize。
IB中是否有设置可以阻止这种情况的发生?
我假设您为情节提要板(或xib)启用了自动布局。
自动布局contentSize
基于滚动视图及其子视图之间的约束来设置滚动视图的。我相信这是在滚动视图的layoutSubviews
方法中发生的。
方法按以下顺序调用:
view controller's viewDidLoad
view controller's viewWillAppear:
view controller's viewWillLayoutSubviews
each view's layoutSubviews, from the root view down
view controller's viewDidLayoutSubviews
view controller's viewDidAppear:
当您尝试设置contentSize
inviewDidLoad
和in时viewWillAppear:
,该设置无效,因为滚动视图layoutSubviews
稍后将其覆盖。将其设置viewDidAppear:
为时,将覆盖滚动视图的功能。
解决此问题的正确方法是在滚动视图及其子视图之间创建约束。如果要使滚动视图垂直滚动,则需要在其顶部边缘和子级之间以及在其底部边缘和子级之间有约束,并且在子级之间需要有足够的约束来确定整体内容的高度。
您可以在技术说明TN2154:UIScrollView和Autolayout中找到Apple的官方文档。
您可能还会发现此视频很有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句