iOS scrollView及其子类(UITableView等等)内容偏下

在iOS7及以上版本,由于viewController的view全屏显示,包含状态栏,导致未在UINavigationController中的scrollView内容可能偏下20个点。通过设置`viewController.automaticallyAdjustsScrollViewInsets = NO`可以解决此问题。此外,当视图结构包含navigationBar、tableView和customTabbar时,pop回来后表格会被customTabbar挡住,同样通过设置该属性为NO可避免此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在iOS7以前,状态栏是独立于viewController之外的。从iOS7开始,viewController的view都默认全屏,包括的状态栏。

假设你的viewController中有一个UIScrollView的对象,而这个viewController又没有在UINavigationController的栈中,那么,很容易出现scrollView的内容往下偏移的情况。至于偏移了多少,我们借助reveal这个界面工具,能够轻而易举的获知。 我遇到的情况就是偏移了20个点,借助reveal,我发现scrollView的contentInset为20.


通过设置viewController.automaticallyAdjustsScrollViewInsets = NO,可以避免这个问题。

真是不知道这个自动调整什么时候会有用,谁会做一个没有导航栏同时以scrollView铺满的界面呢?

还有一个我遇到的因为viewController.automaticallyAdjustsScrollViewInsets引起的问题。

视图层次如下。

screen
1.navigationBar
2.self.view
1.tableView
2.customTabbar
在点击表格后,push进入到另外一个viewController,在push回来的时候,表格最后一行的位子就偏下,被customTabbar挡住。
同样,设置为NO,解决。

就我遇到的这两个情形而言,viewController.automaticallyAdjustsScrollViewInsets = YES会使scrollView的inset尽量的铺满屏幕。

如果scrollView上面没有导航栏,就会自动让出20个点给状态来,如果下面没有UITabbar,就会直接铺到屏幕底部。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值