UITableView 那些事

作者: 好好姐 | 来源:发表于2014-11-25 16:51 被阅读206次

    最新更新:
    是不是常常遇到,tableview 中有输入框的需求,你会怎么做,直接修改tableview 的y, scroll to某一index? 给大家说一个可精准定位滚动位置的方法: textfield 成为焦点时,会触发他的代理方法:

    <pre><code>

    • (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
      {
      //获取当前输入的textfield,在tableview 的位置
      CGPoint pointInTable = [textField.superview convertPoint:textField.frame.origin toView:_detailTableView];
      if (pointInTable.y > (ScreenHeight-KeyboardHeight)) {
      CGPoint contentOffset = _detailTableView.contentOffset;
      contentOffset.y = (pointInTable.y - textField.inputAccessoryView.frame.size.height);
      [_detailTableView setContentOffset:contentOffset animated:YES];
      }
      }
      </code></pre>

    就是这么简单!!!

    1,设置UITableView分割线从顶端开始
    <pre><code>
    -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

    if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
        [tableView setSeparatorInset:UIEdgeInsetsZero];
    }
    
    if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
        [tableView setLayoutMargins:UIEdgeInsetsZero];
    }
    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
    

    }
    </code></pre>

    2,设置UITableView空白数据多余的分割线
    <pre><code>
    _tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
    </code></pre>

    3,当UITableViewCell 使用autoLayout之后,我们知道UILabel设置numberOfLines 为0 时,UILabel 可以自动换行.那么问题来了,自动换行之后,cell的高度也会变,如何计算cell的高度呢? 有一个高大上的方法:
    在cell 中调用可直接返回它的size
    <pre><code>
    CGSize size = [self.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
    </code></pre>

    4,UITableViewCell的xib中也可以设置分割线的Inset

    1.jpg

    相关文章

      网友评论

        本文标题:UITableView 那些事

        本文链接:https://www.haomeiwen.com/subject/aziwtttx.html