iOS 11浮动TableView标题

iOS 11浮动TableView标题

问题描述:

有一个应用程序与多个部分,“展开”每节几行,“折叠”时没有。每个部分都有一个部分标题,正在使用UITableViewHeaderFooterView的子类等等。目前为止这么好。iOS 11浮动TableView标题

然后在iOS的11:

Screenshot describing the issue

我已经使用了可视化调试器,并确认这是我的节头浮动。标题下的所有行显示正确,其他标题显示正常。

为了恢复理智,我抛出了头部的所有重用逻辑,并以编程方式进行编程。彼此彼此。所有在iOS 11之前的工作,仍然在iOS 11中浮动。浮动部分似乎每次都会改变,所以就是这样。

任何想法?

+0

如果禁用扩展合约逻辑,问题是否会消失? –

您是否添加了故事板的标题,如果是,请分享“storyboard中的tableview标题”屏幕截图
您还计算行高吗?是否按预期计算?

+0

最初从XIB加载它们,然后以编程方式创建它们。两者都导致问题。至于身高,我有一个估计的高度,它是通过约束和'UITableViewAutomaticDimension' – VDub19

尝试将表格样式从普通变为分组。

+0

计算有趣。这似乎纠正了视觉错误,但留下了一些其他问题(所有与分组的tableView - 页脚高度,背景颜色和稍微改变的动画有关)。任何想法是什么影响了简单的tableview?表面上看,这似乎是一个不必要的改变,以避免更大的问题。 – VDub19

恰好碰到了类似的问题,并发现其the discussion on this issue为我工作:

self.tableView.estimatedRowHeight = 0; 
self.tableView.estimatedSectionHeaderHeight = 0; 
self.tableView.estimatedSectionFooterHeight = 0; 

好像在iOS的11改为使用估计高度UITableView默认行为。 iOS 11 beta 2发布说明如下:

表视图现在默认使用估计的高度,这也意味着默认情况下单元格和节标题/页脚视图现在都是自大小。 estimatedRowHeight,estimatedSectionHeaderHeight和estimatedSectionFooterHeight属性的默认值现在是UITableViewAutomaticDimension,这意味着表视图选择估计使用的高度。如果可能的话,您仍然应该为每个属性提供更准确的估计值,这是您对实际高度的平均值的最佳猜测。如果现有表格视图代码在使用iOS 11 SDK构建应用程序时行为不同,并且您不想采用自定义大小,则可以通过将值设置为0来禁用估计高度来恢复先前的行为每个估计的身高属性。 (30197915)

另请参阅beta 2版本说明mirrored here

+0

不确定这与行高有关,因为高度显示正确(只是行本身错位)。使建议的更改只是零出一堆行。 – VDub19

+0

将这些设置回零解决了我的问题,谢谢! – amleszk

+0

不需要设置行高('self.tableView.estimatedRowHeight = 0;'),只需设置'estimatedSectionHeaderHeight'和'estimatedSectionFooterHeight'即可。 – Itachi

我不知道为什么在我的情况,@ahmedre答案是不工作...

所以我的回答可能帮助你,如果你将所有估计属性设置为0也不能正常工作:

func tableView(_ tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat { 
    return 0.1 
} 

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    return 0.1 
} 
+0

工程! 0没有工作。 – DaNLtR