通过Xib获取的View的frame修正

在项目中搭建一个较复杂的首页。因为用xib搭建代码比较快。所有在创建tableViewHeaderView的时候通过xib来创建的。

BaseTableViewHeaderView *baseHeaderView = [[[NSBundle mainBundle]loadNibNamed:@"BaseTableViewHeaderView" owner:self options:nil]firstObject];
    self.tableView.tableHeaderView = baseHeaderView;

但是创建好之后。直接给获取到的view的frame在很多情况下都是有问题的。
有些时候高度不对应。当切换不同的手机型号的时候高度差距很大。
通过设置view的frame很多时候并不能很好的去限定tableView的头视图和底部视图。

baseHeaderView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 120);

通过无意的试验发现如果通过创建一个普通的view。然后将通过xib创建的headerView添加到上面。然后将普通的view作为tableView的头视图或者尾视图。那么就可以顺利的设置他的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;

当然我们可以直接通过masonry添加约束。直接通过代码创建头视图和尾视图。

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

推荐阅读更多精彩内容

  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,547评论 1 14
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 1,378评论 0 1
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,246评论 4 61
  • 我有话想对你说,有很多。 走快点,山已经很旧了。 再有一场雨,黄昏就湿透了。 我将吻走在树上,亲一下。 你的脑袋,...
    树上生长一枝鹿阅读 295评论 0 1
  • 长相思 作/墨涯 来也愁,去也愁,愁却芳华尽白头。风霜将满楼。 爱悠悠,恨悠悠,恨到天荒方始休。未言辞去秋。 20...
    墨涯阅读 295评论 2 6