在項(xiàng)目中搭建一個(gè)較復(fù)雜的首頁。因?yàn)橛脁ib搭建代碼比較快昵宇。所有在創(chuàng)建tableViewHeaderView的時(shí)候通過xib來創(chuàng)建的描扯。
BaseTableViewHeaderView *baseHeaderView = [[[NSBundle mainBundle]loadNibNamed:@"BaseTableViewHeaderView" owner:self options:nil]firstObject];
self.tableView.tableHeaderView = baseHeaderView;
但是創(chuàng)建好之后。直接給獲取到的view的frame在很多情況下都是有問題的趟薄。
有些時(shí)候高度不對應(yīng)绽诚。當(dāng)切換不同的手機(jī)型號的時(shí)候高度差距很大。
通過設(shè)置view的frame很多時(shí)候并不能很好的去限定tableView的頭視圖和底部視圖杭煎。
baseHeaderView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 120);
通過無意的試驗(yàn)發(fā)現(xiàn)如果通過創(chuàng)建一個(gè)普通的view恩够。然后將通過xib創(chuàng)建的headerView添加到上面。然后將普通的view作為tableView的頭視圖或者尾視圖羡铲。那么就可以順利的設(shè)置他的frame
BaseTableViewHeaderView *baseHeaderView = [[[NSBundle mainBundle]loadNibNamed:@"BaseTableViewHeaderView" owner:self options:nil]firstObject];
baseHeaderView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 120);
UIView *baseView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 100)];
[baseView addSubview:baseHeaderView];
self.tableView.tableHeaderView = baseView;
當(dāng)然我們可以直接通過masonry添加約束蜂桶。直接通過代碼創(chuàng)建頭視圖和尾視圖。