UITableView使用中的一些刁专问题总结

  1. tableview中cell的系统分隔线问题(分隔线顶满或者缩短)

    //tableview代理方法,设置系统cell的分隔线
    -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (0 == indexPath.section) {
            if (0 == indexPath.row) {
                //cell分隔线缩短50
                if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
                    [cell setSeparatorInset:UIEdgeInsetsMake(0, 50, 0, 0)];
                }
            }else {
                //cell分割线顶满(分隔线加长)
                if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
                    [cell setSeparatorInset:UIEdgeInsetsZero];
                }
                if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
                    [cell setLayoutMargins:UIEdgeInsetsZero];
                }
            }
        }else if (1 == indexPath.section) {
            if (0 == indexPath.row) {
                if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
                    [cell setSeparatorInset:UIEdgeInsetsZero];
                }
                if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
                    [cell setLayoutMargins:UIEdgeInsetsZero];
                }
            }
        }else if (2 == indexPath.section){
            if (0 == indexPath.row) {
                if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
                    [cell setSeparatorInset:UIEdgeInsetsMake(0, 50, 0, 0)];
                }
            }
        }
    }
    
  2. tableview下面出现多余的cell(有分割线影响界面)

    //隐藏多余cell
    -(void)setExtraCellLineHidden: (UITableView *)tableView
    {
        UIView *view = [UIView new];
        view.backgroundColor = [UIColor clearColor];
        [tableView setTableFooterView:view];
    }
    

    例如:
    你要隐藏某个UITableView里面多余的cell
    UITableView *tabelDemo = [[UITableView alloc] init];
    [self.view addSubview:tabelDemo];
    然后直接调用就可以了
    [self setExtraCellLineHidden:tabelDemo];

  3. tableview顶部空出的一部分高度(原因我猜有可能是因为系统自动布局计算了状态栏的高度)

    //去掉tableview顶部高度多出的一部分
    self.edgesForExtendedLayout = UIRectEdgeNone;(这里self指当前控制器,只需要在viewDidl
    Load调用)

    效果图:
    Mou icon

    Mou icon