闻道丶iOS(尝鲜版)iOS Developer

TableView的常用小技巧

2017-03-27  本文已影响16人  131413

tableView是iOS开发中最常用的元素之一,基本80%的界面都是以tableView为父视图布局的,下面总结一些常用的小技巧:

1.tableview的布局类型包括Plain和Grouped两种类型,设置类型只能在表初始化的时候定义。这两种类型都可以设置组,当Plain类型设置组的头视图和尾视图时,会默认悬浮到界面的首部和尾部,直到下一个组的头视图顶上来或者尾视图推下。

2.当我们使用Grouped类型布局时,会默认使用系统间距,头部间距过大 ,类似下图:

屏幕快照 2017-03-27 上午9.58.13.png

缩小头部间距的方法很简单,重新定义表的头视图(表的头视图和组的头视图是有区别的,不懂的同学自行百度),代码如下

 tableVie.tableHeaderView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 1)];

注意:一定要给view一个高度,如果只是用[[UIView alloc]init]初始化一下,系统还是会用默认高度。
按照代码设置完之后:

屏幕快照 2017-03-27 上午10.14.53.png

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)];
        }
    }
    
}
上一篇 下一篇

猜你喜欢

热点阅读