UITableView 設(shè)置成style:UITableViewStyleGrouped模式的時(shí)候,第一個(gè)section距離導(dǎo)航欄會(huì)有一段空白丝里,如圖
B3640615-CC3D-415F-9F78-4126CEFE4B12.png
CGRect rect2 = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
self.tableView = [[UITableView alloc] initWithFrame:rect2 style:UITableViewStyleGrouped];
self.tableView.backgroundColor = [UIColor orangeColor];
self.tableView.dataSource = self;
self.tableView.delegate = self;
這里其實(shí)是一個(gè)被 UITableView 默認(rèn)填充的 HeaderView。而且囚玫,當(dāng)試圖將它的高度設(shè)置為 0 時(shí)江兢,完全不起效果昨忆。但我們用下面的代碼創(chuàng)建一個(gè)高度特別小的 HeaderView 時(shí),上面的邊距就不見(jiàn)了:
[self.tableView setContentOffset:CGPointMake(0, 64)];
CGRect frame = CGRectMake(0, 0, 0, CGFLOAT_MIN);
self.tableView.tableHeaderView = [[UIView alloc]initWithFrame:frame];
CGFLOAT_MIN 這個(gè)宏表示 CGFloat 能代表的最接近 0 的浮點(diǎn)數(shù)杉允,64 位下大概是 0.000225(300左右個(gè))
0.1 和 CGFLOAT_MIN 效果是一樣的邑贴,這個(gè)高度值的影響大概是這樣的:
若傳入的 height == 0席里,則 height 被設(shè)置成默認(rèn)值
若 height 小于屏幕半像素對(duì)應(yīng)的高度,這個(gè) header 不在另一個(gè)像素渲染
半像素也就是 1.0 / scale / 2.0拢驾,如在 @2x 屏上是 0.25
直觀的感受下奖磁,假如這個(gè) height 被設(shè)置成 0.5 的樣子:
51530583jw1er6kdmuz21j20ju0de0u4.jpg
導(dǎo)航欄下面的陰影線(xiàn)看上去寬了 0.5 像素
但是還有一個(gè)問(wèn)題就是需要兼容刷新控件,比如MJRefresh繁疤,只要添加這句代碼即可:
self.automaticallyAdjustsScrollViewInsets = NO;