UITableViewController和UIViewController在tabBarController的区别

一、描述问题:今天在做demo的时候发现了一个很奇怪的问题,如果你的项目中有tabBarController,UITableViewController中的tableView和UIViewController中添加的tableView在屏幕中的位置是不一样的(tableView的frame设置成self.view.bounds)。先来张图看看样子。
  • UITableViewControllertableView的位置
1.png
可以看出,在UITableViewController中,tableVIew的bottm与tabBar的top齐平,无论你怎么滑动,tableView总是从tabBar的top出来,也就是距离屏幕底部49(tabBar的高度)。当然在一般情况下,这样做是不会出现任何问题的。但是,当我需要移动tabBar时就会出现底部有白色的tabBar遮挡,超级low!
2.png
二、解决方法:使用UIViewController中添加tableView的话,效果是这样子:
3.png

这样才是我们想要的结果。

三、分析原因
  • UITableViewController自动设置frame设置有关
    UITableViewController中会自动设置frame,不让tabBar遮挡,这样就造成了移动tabBar时出现白色遮挡的问题。也许有人想设置tableView的contentInset,但是我试过了,没有效果,如果有成功的请告知。
四、关于项目中的做法:在使用UITableViewController时,要注意系统自适应了navigationBartabBar,默认self.tableViewcontentInsetUIEdgeInsetsMake(64, 0, 49, 0)。在UIViewController中添加tableView,如果不进行任何设置contentInset的是UIEdgeInsetsMake(0, 0, 0, 0)。在选择的时候一定要注意。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容