iOS 11 浮动表格视图标题
Posted
技术标签:
【中文标题】iOS 11 浮动表格视图标题【英文标题】:iOS 11 Floating TableView Header 【发布时间】:2018-02-25 01:55:20 【问题描述】:让应用程序包含多个部分,“展开”时每个部分有几行,“折叠”时没有。每个部分都有一个部分标题,正在使用UITableViewHeaderFooterView
等的子类重用它们。到目前为止一切都很好。
然后在 ios 11 中:
我使用了可视化调试器,并确认它是我的部分标题浮动。标题下方的所有行都正确显示,其他标题显示正常。
为了恢复理智,我抛弃了标题的所有重用逻辑,只是以编程方式制作它们。彼此彼此。 iOS 11 之前的所有工作,在 iOS 11 中仍然浮动。浮动的部分似乎每次都在变化,所以就是这样。
有什么想法吗?
【问题讨论】:
您是否从情节提要中添加了标题,如果是,请分享“情节提要中表格视图的标题”截图您还在计算行高吗?计算是否符合预期? 最初从 XIB 加载它们,然后以编程方式创建它们。两者都会导致问题。至于身高,我有一个估计的高度,它是通过约束和UITableViewAutomaticDimension
计算出来的
如果禁用扩展合同逻辑,问题会消失吗?
【参考方案1】:
刚刚遇到了类似的问题,发现 the discussion on this issue 对我有用:
self.tableView.estimatedRowHeight = 0
self.tableView.estimatedSectionHeaderHeight = 0
self.tableView.estimatedSectionFooterHeight = 0
似乎UITableView
的默认行为在 iOS 11 中更改为使用估计高度。 iOS 11 beta 2 的发行说明说:
表格视图现在默认使用估计的高度,这也意味着单元格和部分页眉/页脚视图现在默认为自定大小。 estimatedRowHeight、estimateSectionHeaderHeight 和estimatedSectionFooterHeight 属性的默认值现在是UITableViewAutomaticDimension,这意味着表格视图选择了一个估计的高度来使用。如果可能,您仍应为每个属性提供更准确的估计,这是您对实际高度平均值的最佳猜测。如果您在使用 iOS 11 SDK 构建应用程序时存在行为不同的现有表格视图代码,并且您不想采用自调整大小,则可以通过将估计高度设置为 0 来禁用估计高度来恢复之前的行为。每个估计的高度属性。 (30197915)
另请参阅 beta 2 发行说明 mirrored here。
【讨论】:
不确定这与行高有关,因为高度显示正确(只是行本身放错了位置)。将建议的更改设为零会导致一堆行。 将这些设置回零为我解决了这个问题,谢谢! 不需要设置行高(self.tableView.estimatedRowHeight = 0;
),只需要设置estimatedSectionHeaderHeight
和estimatedSectionFooterHeight
就可以了。【参考方案2】:
如果您想像ahmedre 回答整个应用程序一样进行更改, 您可以在 AppDelegate didFinishLaunchingWithOptions 中设置此属性
UITableView.appearance().estimatedRowHeight = 0
UITableView.appearance().estimatedSectionHeaderHeight = 0
UITableView.appearance().estimatedSectionFooterHeight = 0
【讨论】:
【参考方案3】:我不知道为什么在我的情况下,@ahmedre 的答案不起作用...
因此,如果您将所有估计属性设置为 0 也不起作用,我的回答可能会对您有所帮助:
func tableView(_ tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat
return 0.1
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
return 0.1
【讨论】:
【参考方案4】:尝试将表格样式从普通更改为分组。
【讨论】:
有趣。这似乎已经纠正了视觉错误,但留下了一些其他问题(都与分组的 tableView 相关 - 页脚高度、背景颜色和稍微改变的动画)。知道是什么影响了普通的表格视图吗?从表面上看,这似乎是为了避免更大的问题而进行的不必要的更改。以上是关于iOS 11 浮动表格视图标题的主要内容,如果未能解决你的问题,请参考以下文章