【问题标题】:iOS 11 Floating TableView HeaderiOS 11 浮动表格视图标题
【发布时间】:2018-02-25 01:55:20
【问题描述】:

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

然后在 iOS 11 中:

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

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

有什么想法吗?

【问题讨论】:

  • 您是否从情节提要中添加了标题,如果是,请分享“情节提要中表格视图的标题”截图
    您还在计算行高吗?计算是否符合预期?
  • 最初从 XIB 加载它们,然后以编程方式创建它们。两者都会导致问题。至于身高,我有一个估计的高度,它是通过约束和UITableViewAutomaticDimension 计算出来的
  • 如果禁用扩展合同逻辑,问题会消失吗?

标签: ios swift tableview ios11


【解决方案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;),只需要设置estimatedSectionHeaderHeightestimatedSectionFooterHeight就可以了。
【解决方案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 相关 - 页脚高度、背景颜色和稍微改变的动画)。知道是什么影响了普通的表格视图吗?从表面上看,这似乎是为了避免更大的问题而进行的不必要的更改。
      猜你喜欢
      • 1970-01-01
      • 2018-03-25
      • 2012-07-21
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多