NO BB SHOW CODE
self.tableHeaderView = [[NSBundle mainBundle] loadNibNamed:@"XJPTradTodayHeaderView" owner:nil options:nil].firstObject;
self.tableView.tableHeaderView = self.tableHeaderView;
self.tableView.tableHeaderView.frame = CGRectMake(0, 0, SCREEN_WIDTH, 254);
- 创建自定义
tableViewHeaderView
- 赋值给
tableView
的tableViewHeaderView
- 设置
frame
问题:单纯如上设置会出现 tableViewHeaderView
的高度随不同 iPhone
模拟器而改变。如下图:
![](https://img.haomeiwen.com/i1210359/89ff896ce7c115f3.png)
![](https://img.haomeiwen.com/i1210359/a6539d6a329181c0.png)
问题分析:联想 UICollectionView
也有类似的情况,为了不让系统自动调节控件高度,通常会在代码里添加如下代码:
self.automaticallyAdjustsScrollViewInsets = NO;
官方给的解释为:
![](https://img.haomeiwen.com/i1210359/238de02222544bc1.png)
大概意思为:automaticallyAdjustsScrollViewInsets根据按所在界面的status bar,navigationbar,与tabbar的高度,自动调整scrollview的 inset,设置为no,不让viewController调整。
联想:UITableView
是否也有类似属性。尝试打出 autoresizes
,惊喜发现自动提示 autoresizesSubviews
,点进去注释说明为:default is YES. if set, subviews are adjusted according to their autoresizingMask if self.bounds changes
。同样设置为 NO
,再次在不同模拟器运行得到正确的布局。
解决:
self.tableView.autoresizesSubviews = NO;
网友评论