tableView是iOS開發(fā)中最常用的元素之一,基本80%的界面都是以tableView為父視圖布局的水泉,下面總結一些常用的小技巧:
1.tableview的布局類型包括Plain和Grouped兩種類型善涨,設置類型只能在表初始化的時候定義。這兩種類型都可以設置組草则,當Plain類型設置組的頭視圖和尾視圖時钢拧,會默認懸浮到界面的首部和尾部,直到下一個組的頭視圖頂上來或者尾視圖推下炕横。
2.當我們使用Grouped類型布局時源内,會默認使用系統(tǒng)間距,頭部間距過大 份殿,類似下圖:
屏幕快照 2017-03-27 上午9.58.13.png
縮小頭部間距的方法很簡單膜钓,重新定義表的頭視圖(表的頭視圖和組的頭視圖是有區(qū)別的,不懂的同學自行百度)卿嘲,代碼如下
tableVie.tableHeaderView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 1)];
注意:一定要給view一個高度颂斜,如果只是用[[UIView alloc]init]初始化一下,系統(tǒng)還是會用默認高度腔寡。
按照代碼設置完之后:
屏幕快照 2017-03-27 上午10.14.53.png
3.有時tableView要加載網絡數據焚鲜,當數據還沒加載完并且視圖已經布局的時候掌唾,會顯示好多空的單元格放前,數據加載完成后會顯示正確的布局忿磅,雖然不影響功能,但視覺效果不好凭语,不想顯示空的單元格也很簡單葱她,初始化一下表視圖的尾視圖:
tableVie.tableFooterView = [[UIView alloc]init];
4.去除單元格的分割線
8.0以上的系統(tǒng),可以直接修改單元格屬性
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
8.0以下的系統(tǒng)似扔,需要重新調用代理方法
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}
在該tableview顯示的控制器中調用
-(void)viewDidLayoutSubviews
{
for (ListTableView *tableView in self.tableViews) {
if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[tableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];
}
if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[tableView setLayoutMargins:UIEdgeInsetsMake(0,0,0,0)];
}
}
}