xib 创建自定义view,作为tableview的headView出现的问题

  问题描述: 我用xib自定义了一个视图,作为tableview的headView, 不是sectionheadView(这个也存在);  

  设置的时候出问题了代码如下: 

  FindHeadView *view = [FindHeadView customInit];
    view.frame = CGRectMake(0, 0, SCREEN_WIDTH, 150);
    headView.frame = CGRectMake(0, 0, SCREEN_WIDTH, 150);    
    _mainTableView.tableHeaderView = view;
    
 这样设置之后,高度不正确,原因未知;

 在查找资料之后,我找到了两种方法可以解决这个问题:

  第一种如下:

    UIView *headView = [[UIView alloc]init];

    FindHeadView *view = [FindHeadView customInit];
    view.frame = CGRectMake(0, 0, SCREEN_WIDTH, 150);
    headView.frame = CGRectMake(0, 0, SCREEN_WIDTH, 150);
    [headView addSubview:view];
    
    _mainTableView.tableHeaderView = headView;

用代码创建一个view,作为headView,xib自定义的视图初始化,作为子视图添加到headView上, 两者的frame正确设置; 将代码创建的view作为tableview的headView;


第二种是这样:

FindHeadView *view = [FindHeadView customInit];
    view.frame = CGRectMake(0, 0, SCREEN_WIDTH, 150);
    headView.frame = CGRectMake(0, 0, SCREEN_WIDTH, 150);
    view.autoresizingMask = UIViewAutoresizingNone;    
    _mainTableView.tableHeaderView = view;

xib自定义的视图初始化完成之后, 设置autoresizingMask属性微UIViewAutoresizingNone;这样也可以正常显示;

解决方法是从这两篇博客中找到的:http://www.jianshu.com/p/27114cce7c75; http://www.jianshu.com/p/5c0c8ccc5792;

Stack Overflow也有这个问题:https://stackoverflow.com/questions/19005446/table-header-view-height-is-wrong-when-using-auto-layout-ib-and-font-sizes;  

 根据收集的资料出现问题的原因是跟自动布局有关的, 但是具体的原因还不是很清楚明了.  如果有哪位知道,请不吝赐教;




猜你喜欢

转载自blog.csdn.net/xfy6238/article/details/78708875