iOS开发 TableViewHeaderView设置Frame导致的适配问题.

先上图

图1

iOS开发 TableViewHeaderView设置Frame导致的适配问题._第1张图片

图2

iOS开发 TableViewHeaderView设置Frame导致的适配问题._第2张图片

图1是正确布局,图2是错误布局.

这样的页面让web端实现会比较最好,但因为我们公司是初创型公司,人力资源有限, 所以最终还是决定走原生.

先大概交代一下场景,方便大家意淫,

NavigationController 下只有tableView + 自定义toolbar,

我把评论回复作为tableviewCell,然而顶部的资讯区别用tableView 的HeaderView来显示.

随着需求的增加,无论是tableviewCell的迭代,从固定展示到二级评论,然后还可以展开收起.而HeaderView,也是不断加东西,最终出现这种情况.但这个情况只存在于5s的手机,系统版本8.0-9.0之间的.

新的需求添加,如果model某个属性有值.headerView会新增一个自适应高度的View,但因为不是必然出现,控制器实例化的时候,我没有让这个"自适应高度的View"先生成出来,而是等网络请求,回调后判断数据再决定是否要生成这一块View.

我添加view后,再次计算高度,修改headerView的高度 

a代码:self.headerView.frame=CGRectMake(0,0,kScreenWidth, newViewHeight+titleSize.height);

用几台测试机,5SE,6SPlus,还有7,都没问题,因为公司是初创型公司,人力资源有限,测试的工作也得我们开发独立完成.但因为机型不全的情况下,模拟器跑也没问题,但真正上架后就收到对应的反馈,要看的信息看不到.

我之前是self.headerView = self.tableView.headerView.本以为这样的代码会使他们关联在一起,实际上是不会的,最终的解决核心代码是

b代码:[self.tableView setTableHeaderView: self.headerView];

具体原因不清楚,大概感觉是a代码在5s低系统版本的情况下,无效,而b才用效,所以如果出现类似的问题,跑一下b代码就好了,也不会影响被的适配,安全可靠.

你可能感兴趣的:(iOS开发 TableViewHeaderView设置Frame导致的适配问题.)