【发布时间】:2013-08-28 02:55:20
【问题描述】:
我在UIViewController 的viewDidLoad 方法中设置了一个UIScrollView(我称之为ScrollViewController)。滚动视图包含水平内容页面(类似于原生天气应用)。
当显示滚动视图时,应该可以选择它从哪个页面开始。我的模式是这样的:
- 初始化
ScrollViewController。这里没什么大事。currentPage属性默认为 0。 - 将
scrollViewController.currentPage设置为所需的页码。 - 在
ScrollViewController的viewDidLoad中,阅读self.currentPage并使用scrollToRect或setContentOffset进行相应的滚动。
滚动实现看起来不错,因为我在其他地方使用相同的代码来跳转到某些页面。但是在第一次加载时,什么都没有发生(也就是说,滚动视图没有滚动到所需的页面)。
我认为我找到了原因 - 滚动视图的 contentSize 似乎(由自动布局记住)在 viewDidLoad 期间为 0,这似乎可以防止滚动。在 viewWillAppear 期间它也为零。只有在viewDidAppear 中滚动才有效,这当然会带来奇怪的用户体验。
我该如何解决这个问题?以某种方式强制在viewDidLoad 中进行布局是否明智?还是其他方法?
【问题讨论】:
标签: ios cocoa-touch uiviewcontroller uiscrollview autolayout