tableHeaderView从xib加载时frame设置问题

tableViewtableHeaderView从xib加载时,使用xib加载的默认尺寸,而不设置frame。当tableView还有个sectionHeader时,tableHeaderView在iOS12上显示正常,但在iOS10、11中,tableHeaderView会覆盖cell,并且sectionHeader会显示在tableView的最上面。而给tableViewHeader视图设置frame时,小屏幕上往往要设置远大于实际需要高度才能正常显示。

解决方法:给tableView创建一个UIView作为tableHeaderView,设置正确的frame,并把xib加载来的视图作为子视图放到这个自定义的view上即可(设置frametableHeaderViewbounds)。