加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

tableView设置UITableViewStyleGrouped顶部有空余高度

(2016-01-04 17:04:34)
标签:

style

grouped

分类: IOS开发笔记
我们在开发中很多地方会使用tableView,tableView默认的类型是UITableViewStylePlain。我们在设置分区的时候,需要设置区头和区尾的高度。默认高度大概是17。具体的没有记清楚,这都不是主要的。

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
如果需要分区一定要添加上面的两个代理方法,设置区头区尾的高度,且不能设置为0,那样子没有任何设置效果的。
如果区尾不需要设置高度,可设置为0.1f。但不能为设置0。

这种类型的table,区头和区尾都是有粘性,会一直显示在当前的区上。但有时候我们不需要这种效果,就得需要去粘性,我们可以把类型设置为UITableViewStyleGrouped。那么问题来了:

http://s15/mw690/005COTsZgy6YjbTSYYCbe&690

这是我们想要的效果,上面的间隔会随着table一起往上移动。
在IOS8之前,我们只需要设置UITableViewStyleGrouped就可以了,嵌入到ScrollView中时,设置self.automaticallyAdjustsScrollViewInsets=NO;即可。

但是在ios8之后,再那样子设置好像已经不起作用了。
http://s5/bmiddle/005COTsZgy6YjdqrAR654&690

比设置的要高出了一部分,
试了好多方法,终于找到原因了,在IOS8之后,table设置StyleGrouped类型,需要设置tableHeaderView,
这样才有效,把
tableHeaderView = nil,也是没有用。需要创建一个view实例,且frame不能设置为CGRectZero。


我是这样子写的:
table.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, zScreenWidth, CGFLOAT_MIN)];

这样子设置后,运行就和我们想要的效果一样了!


希望可以帮到有需要的小伙伴,如果谁有更好的方法,可以吐槽一下啊!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有