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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容