Обратная совместимость высоты заголовка NSTableView с OS X 10.11

Задний план:

В OS X 10.11 El Capitan высота заголовка NSTableView по умолчанию увеличилась.

Проблема:

Когда я создаю свой NSTableView на OS X El Capitan 10.11 (GM) и Xcode 7.0 (стабильный), высота заголовка таблицы будет исправлена ​​с высотой заголовка El Capitan даже в предыдущих версиях ОС, поэтому наверху появляется странное нежелательное пространство заголовок таблицы (см. скриншоты ниже).

заголовок таблицы на Эль-Капитане

Рис. 1 Заголовок таблицы на Эль-Капитане (правильно)

заголовок таблицы на Эль-Капитане

Рис. 2 Заголовок таблицы по Йосемити (неверно)

Это, конечно, нежелательная вещь.

Вопрос:

Как мне этого избежать? Есть ли кто-нибудь, кто сталкивается с такой же проблемой? Я не нашел ни одной статьи, в которой упоминалось бы об этом.

Я установил свой NSTableView с помощью обычного Interface Builder в комплекте с Xcode 7.0 с включенной функцией Auto Layout.

Обновлять:

Я только что подтвердил, что эта проблема исправлена ​​в Xcode 7.2 + OS X 10.11.2. Теперь вы можете без проблем изменять NSTableView в Интерфейсном Разработчике.


person 1024jp    schedule 22.09.2015    source источник
comment
FWIW, у меня была эта проблема на Xcode 7.3.1, так что, возможно, она вернулась или не полностью исправлена. В итоге я просто вручную отредактировал xib (github.com/HermesApp/Hermes/ >).   -  person Nicholas Riley    schedule 11.06.2016


Ответы (1)


Это определенно кажется ошибкой в ​​структуре Apple. Это происходит только тогда, когда представление автоматически раскладывается. Мне удалось обойти это, создав подкласс 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.

person Marius    schedule 10.10.2015
comment
Да, это должно быть ошибкой. Моя работа теперь заключается в том, чтобы просто повторно авторазложить их перед сборкой релиза в моей среде Yosemite. кажется, что вашим подклассом легче управлять. Спасибо. Надеюсь, Apple скоро исправит ошибку. - person 1024jp; 12.10.2015
comment
Если кто-нибудь столкнется с этим, сообщите об ошибке в Apple. - person Demitri; 19.10.2015