最近做项目遇到一位用户使用苹果4手机,遇到了UIscrollview无法滑动的问题,查找后得知,原因是发现要放在viewDidAppear里面。。。。运行。。。。还是不行,什么毛病?难道网上大神的帖子都是骗人的?说好的解决方案呢....
找来找去也没找到方法,最后憋了1分钟,发现又有个新方法叫viewDidLayoutSubviews,尼玛,这啥时候出来的方法啊。果然这个方法是控制layout的,然后只好在这个坑爹的方法里再射一次,运行....好了,终于能动,坑爹的方法。下面放上坑爹方法:
- (void)viewDidLayoutSubviews
{
self.scrollView.contentSize = CGSizeMake(712,1000);
找来找去也没找到方法,最后憋了1分钟,发现又有个新方法叫viewDidLayoutSubviews,尼玛,这啥时候出来的方法啊。果然这个方法是控制layout的,然后只好在这个坑爹的方法里再射一次,运行....好了,终于能动,坑爹的方法。下面放上坑爹方法:
- (void)viewDidLayoutSubviews
{
self.scrollView.contentSize = CGSizeMake(712,1000);
}
17:20:00.481 Test_Scroller[2521:70b] viewDidLoad
17:20:00.482 Test_Scroller[2521:70b] viewWillAppear:
17:20:00.486 Test_Scroller[2521:70b] viewWillLayoutSubviews
17:20:00.486 Test_Scroller[2521:70b] viewDidLayoutSubviews
17:20:00.491 Test_Scroller[2521:70b] viewDidAppear:
打印的生命周期函数最后一个是viewDidAppear为啥在里面设置不行呢?
原来是在autolayout下,会在viewDidAppear之前根据subview的constraint重新计算scrollview的contentsize。 这就是为什么,在viewdidload里面手动设置了contentsize没用。因为在后面,会再重新计算一次,前面手动设置的值会被覆盖掉。