UITableView标题视图重叠iOS 10中的单元格

inv*_*ent 14 uitableview ios

UITableView在我的应用程序中有一个简单的,并且有一个自定义视图的tableView.tableHeaderView属性.设置此属性后,视图的大小正确(全宽,大约45px高).

[_resultHeaderView sizeToFit]; // the view as the correct frame
[_resultTableView setTableHeaderView:_resultHeaderView];
Run Code Online (Sandbox Code Playgroud)

在iOS 9及以前的版本中,标题显示正确,但在iOS 10中,单元格与标题视图的Y坐标相同,因此我的标题视图显示在第一个单元格上.

设置这些属性也没有效果:

self.edgesForExtendedLayout = UIRectEdgeNone;
self.automaticallyAdjustsScrollViewInsets = NO;
Run Code Online (Sandbox Code Playgroud)

在iOS 10中有什么变化可以解释这种不同的行为吗?什么是一个好的解决方案?

谢谢

inv*_*ent 16

错误在于视图被自动调整大小,因此当它被附加到tableView时它的帧高度确实是0,这解释了行为.

将autoresizingMask设置为none可修复此错误.

_headerView.autoresizingMask = UIViewAutoresizingNone

同样,在iOS 9及更低版本中没有必要.希望这有助于其他人.

  • 在Swift 3中为UIViewAutoresizingNone设置UIViewAutoresizing值,将其设置为[] (13认同)
  • 对于 Swift 4,类似`_headerView.autoresizingMask = []` (3认同)