繁体   English   中英

iOS 11浮动TableView标题

[英]iOS 11 Floating TableView Header

让应用程序有多个部分,“扩展”时每个部分有几行,“折叠”时没有。 每个部分都有一个部分标题,正在使用UITableViewHeaderFooterView等的子类重用它们。到目前为止UITableViewHeaderFooterView很好。

然后在iOS 11中:

描述问题的屏幕截图

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

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

有任何想法吗?

刚遇到类似的问题,发现这个问题的讨论对我有用:

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构建应用程序时表现不同,并且您不想采用自行调整大小,则可以通过将值设置为零来禁用估计的高度来恢复以前的行为。每个估计的高度属性。 (30197915)

另请参阅此处镜像的beta 2发行说明。

如果你想在整个应用程序的ahmedre答案中进行更改,可以在AppDelegate中设置此属性didFinishLaunchingWithOptions

UITableView.appearance().estimatedRowHeight = 0
UITableView.appearance().estimatedSectionHeaderHeight = 0
UITableView.appearance().estimatedSectionFooterHeight = 0

我不知道为什么在我的情况下,@ ahmedre的回答是行不通的...

所以如果你将所有估计的属性设置为0也不起作用,我的答案可能对你有帮助:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM