iOS tableView 有关header

  1. 如果你用xib加载headerView然后通过代码添加到tableView的header出现乱七八糟的事儿,比如布局算不准,比如点击事件无法响应,加下面这行代码
    header.autoresizingMask = UIViewAutoresizingFlexibleWidth;
  1. 用xib在tableView的xib中直接画header

首先在xib中拖一个UIVew进去,注意先拖入到与View并列处,如图:


iOS tableView 有关header_第1张图片
屏幕快照 2018-06-08 下午3.51.54.png

然后将,这个View拖到File’s Ower 的那一并列层中,(按照箭头所指的方向拖拽即可)如图:


iOS tableView 有关header_第2张图片
屏幕快照 2018-06-08 下午3.52.05.png

然后:


iOS tableView 有关header_第3张图片
屏幕快照 2018-06-08 下午3.52.13.png

接下来的一步不要忘记:把刚刚的UIView的Simulated Metrics的Size设置成Freeform。(忘记此步骤下面就不成功了)

然后再将这个VIew拖入到TableView,还是按图箭头方向操作即可,如图:


iOS tableView 有关header_第4张图片
屏幕快照 2018-06-08 下午3.52.30.png

完成后如图所示:


iOS tableView 有关header_第5张图片
屏幕快照 2018-06-08 下午3.52.34.png

这个时候,该UIView会自动作为UITableView的tableHeaderView或tableFooterView了。

  1. 自动布局head
    如果自定义的head里面约束上下完整,那么可以在VC中使用的时候,不用设置高度,
    利用如下代码:
  self.mineTableView.tableHeaderView = self.mineHeadView;
  [self.mineHeadView mas_makeConstraints:^(MASConstraintMaker *make) {
      make.top.offset(0);
      make.width.offset(WIDTH_OF_SCREEN);
  }];

- (void)viewDidLayoutSubviews {
    CGFloat headHeight = [self.mineTableView.tableHeaderView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
    CGRect newFrame = self.mineTableView.tableHeaderView.frame;
    newFrame.size.height = headHeight;
    self.mineHeadView.frame = newFrame;
//    [self.mineHeadView mas_updateConstraints:^(MASConstraintMaker *make) {
//        make.top.offset(newFrame.origin.y);
//    }];
}

或者:

   1,  self.tableView.tableHeaderView = self.headV;
      CGFloat headHeight = [self.headV systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
    CGRect newFrame = self.headV.frame;
    newFrame.size.height = headHeight;
    self.headV.frame = newFrame;
2. 在headV填充数据后,再次设置:
         CGFloat headHeight = [self.headV systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
        CGRect newFrame = self.headV.frame;
        newFrame.size.height = headHeight;
        self.headV.frame= newFrame;
        self.tableView.tableHeaderView = self.headV;

你可能感兴趣的:(iOS tableView 有关header)