【问题标题】:Backward compatibility of header height of NSTableView with OS X 10.11NSTableView 标头高度与 OS X 10.11 的向后兼容性
【发布时间】:2015-09-22 08:53:21
【问题描述】:

背景:

在 OS X 10.11 El Capitan 上,NSTableView 的默认标题高度已经增加。

问题:

当我在 OS X El Capitan 10.11 (GM) 和 Xcode 7.0(稳定版)上构建我的 NSTableView 时,即使在以前的操作系统版本上,表格标题高度也将被固定为 El Capitan 的标题高度,所以有一个奇怪的表格标题上方不需要的空间(请参见下面的屏幕截图。)

图。 1 El Capitan 上的表头(正确)

图。 2 优胜美地上的表头(不正确)

这当然是一件不受欢迎的事情。

问题:

我怎样才能避免这种情况?有没有人面临同样的问题?我什至找不到任何提到这一点的文章。

我使用绑定到 Xcode 7.0 并启用自动布局的普通 Interface Builder 放置我的 NSTableView。

更新:

我刚刚确认此问题已在 Xcode 7.2 + OS X 10.11.2 上得到修复。现在您可以放心地在 Interface Builder 上修改 NSTableView。

【问题讨论】:

  • FWIW,我在 Xcode 7.3.1 上遇到了这个问题,所以它可能又回来了,或者没有完全修复。我最终只是手动编辑了 xib (github.com/HermesApp/Hermes/commit/…)。

标签: cocoa nstableview osx-elcapitan


【解决方案1】:

这绝对是 Apples 框架中的一个错误。它仅在视图自动布局时发生。 我设法通过像这样子类化 NSTableHeaderView 来解决这个问题:

class TGTableHeaderView: NSTableHeaderView {
    override var frame: NSRect {
        set {
            super.frame = newValue
        }
        get {
            var rv = super.frame
            if #available(OSX 10.11, *) {} else {
                // Correct in versions before El Capitan
                rv.size.height = 17
            }
            return rv
        }
    }
}

然后将这个子类设置为IB中的header。

【讨论】:

  • 是的,这应该是一个错误。我现在的解决方法是在我的优胜美地环境上发布之前重新自动布局它们。您的子类似乎更易于管理。谢谢。我希望苹果能尽快修复这个错误。
  • 如果有人遇到此问题,请向 Apple 提交错误报告。
猜你喜欢
  • 2013-03-04
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
  • 1970-01-01
  • 2012-03-16
相关资源
最近更新 更多