【问题标题】:Wrong table cell icon content tint on Big SurBig Sur 上的表格单元格图标内容色调错误
【发布时间】:2021-02-28 00:10:07
【问题描述】:

我目前正在将我的应用程序迁移到 Big Sur,但是我无法让 NSTableCellViews 正常运行。 Big Sur 现在在表格单元格图像视图中为模板图像使用系统色调,就像您在此处的 Finder 中看到的那样:

现在大部分情况下,这在我的NSTableViews(源列表类型)中运行良好,但是在我选择表格单元格之前,某些单元格似乎不会应用色调。我尝试了一切,包括只使用新的NSOutlineViewNSTableCellViews,没有任何修改,但没有成功。

这对我来说是这样的:

表格的第一个单元格在第一个显示时始终显示为无色。有谁知道是什么原因造成的?

PS:我怀疑NSImageView 有问题,因为当我在图像视图上手动设置色调颜色时,色调也仅在我至少选择一次单元格后才开始出现:

cell.imageView?.contentTintColor = .red

据我所知,这是一个 Apple SDK 错误。

实施以下内容并仅返回强调色似乎可以缓解此问题,但并未完全解决。单个图标未着色的情况仍然可能发生。

extension MyController: NSOutlineViewDelegate {

    @available(OSX 11.0, *)
    func outlineView(_ outlineView: NSOutlineView,
                     tintConfigurationForItem item: Any) -> NSTintConfiguration? {
        .init(preferredColor: .controlAccentColor)
    }
}

但我认为这不是必需的。

PS:即使有这个“修复”单元格图标有时也没有应用颜色。

【问题讨论】:

  • 很遗憾,我没有解决办法,但我可以确认您不是唯一看到此行为的人。你提交了雷达吗?

标签: swift macos cocoa appkit macos-big-sur


【解决方案1】:

部分修复

如果您使用的是界面生成器:

  1. 选择带有图标的NSTableCellView
  2. 删除imageViewcellView之间的连接。
  3. 在单元格中选择imageView 并使用属性检查器手动设置色调颜色。 (您可以选择“强调色”,它仍会提供动态强调色。)

现在 NSOutlineView 将不再神奇地随机更改色调颜色,因为它无法在单元格中找到 NSImageViews。

缺点:

  1. 您不能再使用tintConfigurationForItem API。

  2. 当窗口失去关键状态时,OutlineView 将不再自动降低图标的不透明度。 (您可以通过遍历行、查找 NSImageView 并自己设置值来手动执行此操作。这对于您的用例是否有效是一个问题。)

结论:

我确实认为你是对的:Apple 的某个人在某个地方搞砸了着色。 Apple 工程部门将在 2035 年和宇宙热寂之间的某个时间解决这个问题。

对我来说,当我重新加载 outlineView 时,图标会变为 100% 黑色,然后在我选择然后取消选择一行时又变回正确的色调。完成一次后,该问题不会再次出现,直到应用重新启动。

【讨论】:

  • 期待在绕红矮星运行时阅读修复的补丁说明。
猜你喜欢
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 2016-02-02
  • 2021-09-23
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多