iOS-scrollview及其子类适配iOS7

时间:2023-12-04 23:04:02

问题描述:

在iOS7之后如果在导航控制器中所属的字控制器中嵌入scrollview及其子类的视图,当scrollview的尺寸太小的话不会调用返回cell的方法。控制器的嵌套层级结构如下图所示,着重说明的一点是我的collectionview(其父类是UIscrollview)是写在UIViewcontroller里面的。而这个ViewController又是navagationController的子类。

这样一来就符合了产生BUG的条件,当我的collectionview 的高度并不是很高的时候程序运行起来竟然不调用返回collectionView返回cell的方法。

经过笔者反复测试发现:

1.当collectionView 的高度适当增大时,再次运行程序,有可能会调用返回cell的方法。

2.但是调用的次数跟我设置的个数并不一致。

3.cell的位置也不是之前预设的位置。

果断百度搜索查询这个错误,在 :http://*.com/questions/21069258/automaticallyadjustsscrollviewinsets-not-working

这篇帖子中我找到了解决方案,产生这个bug的大致原因就是:在iOS7之后,如果一个scrollview及其子类的控件并没有直接归属为navagationController的子控制器时,那么在该scrollview所属的控制器在视图初始化的时候会自动调整该scrollview 的布局,如果该scrollview的尺寸很小的话,可能就会导致不调用返回cell的方法。

解决方案:在该scrollview(或子类)所属的控制器中的 -(void)Viewdidload方法中加入:self. automaticallyadjustsscrollviewinsets = NO;这段代码(意思就是取消控制器对scrollerview的布局自动调整)。

iOS-scrollview及其子类适配iOS7

bug解决前后对比:

iOS-scrollview及其子类适配iOS7iOS-scrollview及其子类适配iOS7