适配iOS6时,scrollView中遇到的一个问题
2015-07-23 本文已影响631人
Levi_
scrollView中使用AutoLayout布局,在viewDidLoad中设置了contentSize属性。发现在iOS6中运行时,scrollView无法滚动,即contentSize并不符合在viewDidLoad中设置的大小。
最终发现问题如下:
iOS6中的AutoLayout机制,在viewDidLoad函数被执行后,AutoLayout会重新把contentSize修改为符合屏幕大小的数值,也就是说,现在的contentSize又适合了屏幕大小,并没有大于UIScrollView本身内容的大小。
解决办法:
在viewDidAppear方法中给scrollView设置contentSize属性:
- (void)viewDidAppear:(BOOL)amimated
{
[super viewDidAppear:animated];
_scorllView.contentSize = CGSizeMake(width,height);
}
这个函数会在autoLayout之后执行,也就是说,在iOS6中,autoLayout执行在viewDidLoad及viewWillAppear之后,并执行在viewDidAppear之前。
另外延伸的说一下,在Xib中做页面布局并使用AutoLayout时,布局会发生在viewWillAppear之后和viewDidAppear之前,所以,想得到布局完成的View进行查看或操作,至少要等到viewDidAppear执行时。