问题描述: 我用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;
根据收集的资料出现问题的原因是跟自动布局有关的, 但是具体的原因还不是很清楚明了. 如果有哪位知道,请不吝赐教;