我有一个在 viewDidLoad
中设置的 UIScrollView UIViewController
的方法(我称之为 ScrollViewController
)。 ScrollView 包含水平内容页面(类似于 native 天气应用程序)。
显示 ScrollView 时,应该可以选择它从哪一页开始。我的模式是这样的:
- 初始化
ScrollViewController
.这里没什么大事发生。currentPage
属性默认为 0。 - 设置
scrollViewController.currentPage
到所需的页码。 - 在
viewDidLoad
的ScrollViewController
, 阅读self.currentPage
并使用scrollToRect
或setContentOffset
相应地滚动。
滚动实现看起来不错,因为我在其他地方使用相同的代码跳转到某些页面。但是在第一次加载时,没有任何反应(也就是说, ScrollView 没有滚动到所需的页面)。
我认为我找到了原因 - 似乎 contentSize
在 viewDidLoad
期间, ScrollView 的(由自动布局派生的记得)为 0 ,这似乎可以防止滚动。在 viewWillAppear 期间它也为零。仅在 viewDidAppear
滚动是否起作用,这当然会带来奇怪的用户体验。
我该如何解决这个问题?以某种方式在 viewDidLoad
中强制布局是否明智? ?或者其他一些方法?
最佳答案
viewDidLayoutSubviews
就是您要找的。这是完全初始化所有 subview 框架的方法。因此,尝试在您的 viewController 中调用您的 scrollView 的设置方法:
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self setupView];
}
关于ios - 使用自动布局时如何在加载时滚动 UIScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18430218/