去掉 UITableView 顶部的多余空间
来源:互联网 发布:自学cg插画知乎 编辑:程序博客网 时间:2024/05/22 03:18
http://thegisguy.tk/remove-extra-padding-on-top-of-uitableview/
将 UITableView 的 style 设为 grouped 后发现顶部出现了大约有35px的额外空白。
原因是 group 样式的 UITableView
顶部会生成自带初始高度的 tableHeaderView
。解决方案将 tableHeaderView 替换成一个高度为0的 UIView。首先尝试将高度设为 CGRectZero:
// 这种写法有问题UIView *tableViewHeaderView = [[UIView alloc] initWithFrame:CGRectZero]; self.tableView.tableHeaderView = tableViewHeaderView;
另外,如果 UITableView 充满了整个 ViewController 的垂直空间,还需要添加下面这行代码,禁止 ViewController 自动调整 ScrollView Insets:
self.automaticallyAdjustsScrollViewInsets = NO;
使用上面这种写法,视图初始化之后看似正常,但由于实际上 tableHeaderView 不接受0作为高度,在进行页面滚动之后可能会现现问题。
正确的写法是将高度设为一个很小但不为0的数值。
// 正确的写法UIView *tableViewHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.tableView.bounds.size.width, CGFLOAT_MIN)]; self.tableView.tableHeaderView = tableViewHeaderView;
上面代码中使用了 CGFLOAT_MIN
,表示浮点数的最小值。写成 0.01f
这样的数值也可以,但不如上面的写法来得自然。
不论这种情况算不算是 Bug,至少算是一种 unexpected behaviour。网上可以搜到的另外一种解决方法,是将 UITableView
顶部的 contentInset
设为负值。
self.tableView.contentInset = UIEdgeInsetsMake(-36, 0, 0, 0);
这并不是一种好的方案。首先,-36只是一个经验值,并不适用于所有机型,特别是那些还未发布的机型。另外,如果 Apple 在将来改变了 UITableView
的这一行为,把 contentInset
设为负值会带来新的问题,将 tableHeaderView
设为0就不存在这样的风险。
参考
- why extra space is at top of UITableView - simple
- Why is there extra padding at the top of my UITableView with style UITableViewStyleGrouped in iOS7
- 去掉 UITableView 顶部的多余空间
- UITableView去掉多余的separatorLine
- UITableView去掉多余的横线
- iOS去掉UITableView多余的separator
- 关于去掉UITableView多余的部分
- iOS 去掉UITableView 多余的 separator
- 去掉UITableView底部多余的线
- UItableView 去掉多余的分割线
- 如何去掉UITableView中多余的cell
- 去掉UITableView中多余空行
- 常识小结----UITableView 去掉多余的分割线的方法
- UITableView 分割线设置 (去掉底部多余的分割线)
- iOS开发中去掉UITableView中多余的分割线
- iOS-83-UITableview消除顶部多余空白
- 去掉多余的bpl
- iOS经典讲解之UITableView 去掉底部多余的行和分割线
- iOS 去掉UITableView风格为group时候的最顶部的空白距离
- iOS 去掉UITableView风格为group时候的最顶部的空白距离
- Android自定义Adapter的ListView的思路及代码
- Qt在Windows下的三种编程环境搭建
- A*算法解决八数码(九宫重排)问题
- 怎样用cmd运行exe控制台程序
- VMware下linux机联网配置
- 去掉 UITableView 顶部的多余空间
- [ecshop调试]ecshop 数据库查询缓存详解 有三种缓存,query_cache(数据库查询缓存)、static_cache(静态缓存)和cache(普通的缓存)
- c++模板函数
- 数据结构基础5.1:树的遍历(递归与非递归实现)
- C语言中,注释不能嵌套
- java编程,格式化数字小数位
- 架构设计最佳实践与必备素养
- 算法-排序-选择排序(直接选择和堆排序)
- 检测亚像素级角点