去掉 UITableView 顶部的多余空间
2015-11-07 21:16
246 查看
http://thegisguy.tk/remove-extra-padding-on-top-of-uitableview/
将 UITableView 的 style 设为 grouped 后发现顶部出现了大约有35px的额外空白。
原因是 group 样式的
tableHeaderView 替换成一个高度为0的 UIView。首先尝试将高度设为 CGRectZero:
另外,如果 UITableView 充满了整个 ViewController 的垂直空间,还需要添加下面这行代码,禁止 ViewController 自动调整 ScrollView Insets:
使用上面这种写法,视图初始化之后看似正常,但由于实际上 tableHeaderView 不接受0作为高度,在进行页面滚动之后可能会现现问题。
正确的写法是将高度设为一个很小但不为0的数值。
上面代码中使用了
不论这种情况算不算是 Bug,至少算是一种 unexpected behaviour。网上可以搜到的另外一种解决方法,是将
这并不是一种好的方案。首先,-36只是一个经验值,并不适用于所有机型,特别是那些还未发布的机型。另外,如果 Apple 在将来改变了
Why is there extra padding
at the top of my UITableView with style UITableViewStyleGrouped in iOS7
将 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 - simpleWhy is there extra padding
at the top of my UITableView with style UITableViewStyleGrouped in iOS7
相关文章推荐
- [POJ1679]The Unique MST 次小生成树
- IOS UITextView
- 模仿UITableView的WaterFlowView和控件的懒加载
- 解析XML--用php,dom来获得xml文件里的标签内value
- LeetCode题解——Unique Binary Search Trees
- iOS讲解迷惑--生成uuid
- Integer.parseInt()和Integer.valueOf()有什么区别
- 【Android UI设计与开发】第08期:底部菜单栏(三)Fragment+FragmentTabHost实现仿新浪微博底部菜单栏
- Sublime Text 3 (Build 3059) 证书、汉化、环境配置、常用快键
- iOS7中计算UILabel中字符串的高度
- Modern UI for WPF笔记 创建空白窗口
- [Android UI] 波浪特效的实现
- UI设计师不可不知的安卓屏幕知识
- LeetCode -- Repeated DNA Sequences
- 使用mysql_query()方法操纵数据库以及综合实例
- 工作队列(workqueue) create_workqueue/schedule_work/queue_work
- Qt Quick 事件处理之信号与槽
- 在android的spinner中,实现取VALUE值和ID值
- IOS 自定义 UIView 实现重用
- iOS开发25-iOS可视化编程-Interface Builder