博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIScrollerView遇到UINavigationController
阅读量:4949 次
发布时间:2019-06-11

本文共 955 字,大约阅读时间需要 3 分钟。

项目中有一个页面的某个部分需要横向滚动显示多张图片。很自然想到使用UIScrollview,具体实现非常容易,最开始做了一个Demo,效果如下:

                                      

可是把这个ViewController添加到一个UINavigation中,结果就完全不一样了,如下:

                                     

原因也很容易分析出来,无非是UIScrollView的contentInset被改变了,很容易验证这个说法,在viewDidAppear中将UIScrollView对象的contentInset值给打印出来即可。

现在所要做的事情是解决这个问题,处理的对象当然就是UIScrollView对象的contentInset属性了,将之设置为UIEdgeInsetsMake(0, 0, 0, 0)即可,但在哪儿设置了,笔者在viewDidLoad、viewWillAppear和viewDidAppear这些回调函数中都试过,可是都失败了。

后来查阅stackoverflow,终于找到了解决方法:在相应的ViewController中实现viewDidLayoutSubviews方法,然后设置UIScrollView实例的contentInset属性即可,如下:

- (void)viewDidLayoutSubviews {    self.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);    [super viewDidLayoutSubviews];}

笔者手贱,发现在viewWillLayoutSubviews中处理同样也可以解决这个问题;甚至隔了几天之后,发现另外一个解决问题的方案:设置相关UINavigationController的navigationBar的translucent属性为False也可以。

还有一些方法:设置ViewController的属性automaticallyAdjustsScrollViewInsets为False。

其实原因很简单,在iOS官方文档《View Controller Catalog for iOS》中能找到答案。

转载于:https://www.cnblogs.com/FightingLuoYin/p/4422816.html

你可能感兴趣的文章
2019牛客暑期多校训练营(第七场)- Find the median
查看>>
HDU1542 Atlantis
查看>>
POJ 2201 Cartesian Tree
查看>>
洛谷P3796 AC自动机
查看>>
2019 Multi-University Training Contest 6 - Nonsense Time
查看>>
BZOJ 1176 Mokia
查看>>
洛谷P2414 阿狸的打字机
查看>>
洛谷P3332 K大数查询
查看>>
2019 Multi-University Training Contest 10 - Make Rounddog Happy
查看>>
牛客 CSL的密码
查看>>
HDU3518 Boring counting
查看>>
UVA 11107 Life Forms
查看>>
HDU6376 度度熊剪纸条
查看>>
2018 Multi-University Training Contest 8 - Taotao Picks Apples
查看>>
2018 Multi-University Training Contest 8 - From ICPC to ACM
查看>>
HDU6380 degree
查看>>
HDU6344 调查问卷
查看>>
2018 Multi-University Training Contest 9 - Rikka with Stone-Paper-Scissors
查看>>
HDU6345 子串查询
查看>>
2018 Multi-University Training Contest 10 - Videos
查看>>