Ben*_*ard 5 cocoa-touch uiscrollview uiviewcontroller ios autolayout
我有一个UIScrollView,它在a的viewDidLoad方法中设置UIViewController(我称之为a ScrollViewController).滚动视图包含水平内容的页面(类似于本机天气应用程序).
显示滚动视图时,应该可以选择它开始的页面.我的模式是这样的:
ScrollViewController.这里没有什么事情发生.一个currentPage属性被默认为0.scrollViewController.currentPage为所需的页码.viewDidLoad中ScrollViewController,阅读self.currentPage和使用scrollToRect或者setContentOffset相应地滚动.滚动实现看起来很好,因为我在其他地方使用相同的代码跳转到某些页面.但是在第一次加载时,没有任何反应(也就是说,滚动视图不会滚动到所需的页面).
我想我已经找到了原因 - 看起来contentSize滚动视图(由autolayout推导出来的)在0期间是0 viewDidLoad,这似乎阻止了滚动.在viewWillAppear期间它也是零.仅在viewDidAppear滚动工作中,这当然会产生奇怪的用户体验.
我该如何解决这个问题?以某种方式强制布局是明智的viewDidLoad吗?还是其他一些方法?
viewDidLayoutSubviews是你在找什么.这是完全初始化所有子视图帧的方法.因此,尝试在viewController中调用scrollView的setup方法:
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self setupView];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1110 次 |
| 最近记录: |