tableView是iOS开发中最常用的元素之一,基本80%的界面都是以tableView为父视图布局的,下面总结一些常用的小技巧:
1.tableview的布局类型包括Plain和Grouped两种类型,设置类型只能在表初始化的时候定义。这两种类型都可以设置组,当Plain类型设置组的头视图和尾视图时,会默认悬浮到界面的首部和尾部,直到下一个组的头视图顶上来或者尾视图推下。
2.当我们使用Grouped类型布局时,会默认使用系统间距,头部间距过大 ,类似下图:
缩小头部间距的方法很简单,重新定义表的头视图(表的头视图和组的头视图是有区别的,不懂的同学自行百度),代码如下
tableVie.tableHeaderView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 1)];
注意:一定要给view一个高度,如果只是用[[UIView alloc]init]初始化一下,系统还是会用默认高度。
按照代码设置完之后:
3.有时tableView要加载网络数据,当数据还没加载完并且视图已经布局的时候,会显示好多空的单元格,数据加载完成后会显示正确的布局,虽然不影响功能,但视觉效果不好,不想显示空的单元格也很简单,初始化一下表视图的尾视图:
tableVie.tableFooterView = [[UIView alloc]init];
4.去除单元格的分割线
8.0以上的系统,可以直接修改单元格属性
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
8.0以下的系统,需要重新调用代理方法
-(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)];
}
}
}