NSTableView的头高度与OS X 10.11的向后兼容性

时间:2015-09-22 08:53:22

标签: cocoa nstableview osx-elcapitan

背景

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

问题:

当我在OS X El Capitan 10.11(GM)和Xcode 7.0(稳定版)上构建我的NSTableView时,即使在之前的操作系统版本上,桌面标题高度仍将使用El Capitan的标题高度修复,因此表格标题上方有一个奇怪的不需要的空间(参见下面的截图。)

table header on El Capitan

图。 1 El Capitan上的表格标题(正确)

table header on El Capitan

图。 2 Yosemite上的表格标题(不正确)

这当然是不可取的。

问题:

我该如何避免这种情况?是否有人面临同样的问题?我甚至找不到任何提到这件事的文章。

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

更新

我刚刚确认此问题已在Xcode 7.2 + OS X 10.11.2上修复。现在,您可以毫不费力地在Interface Builder上修改NSTableView。

1 个答案:

答案 0 :(得分:2)

这绝对是苹果框架中的一个错误。它只发生在视图自动布局时。 我设法通过子类化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中的标题。