6

背景:

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

问题:

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

El Capitan 上的表头

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

El Capitan 上的表头

图 2 Yosemite 上的表头(不正确)

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

问题:

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

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

更新:

我刚刚确认此问题已在 Xcode 7.2 + OS X 10.11.2 上修复。现在您可以在 Interface Builder 上修改 NSTableView 而无需担心。

4

1 回答 1

2

这绝对是 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 中的标头。

于 2015-10-10T09:45:16.667 回答