Представление содержимого NSWindow имеет суперпредставление, которое является экземпляром NSThemeFrame.Этот класс отвечает за отрисовку текста заголовка, текстуру фона окна / панели инструментов и содержит подпредставления для всего остального (кнопка закрытия, кнопка полного экрана, значок NSDocument и т. Д.).
Вы можете использовать Objective-Среда выполнения C для замены метода drawRect: метода NSThemeFrame собственным методом, который вызовет родительскую реализацию и затем выполнит пользовательское рисование поверх него.
Существует также закрытый метод для поиска прямоугольника, в котором нарисован заголовоки публичные методы в NSFont, чтобы найти его шрифт и размер шрифта.
Что я сделал, так это установил цвет фона окна как сплошной цвет (черный) вместо градиента / текстуры, затем установил его как«текстурированное» окно (которое приводит к фактическому отображению цвета фона, иначе это не произойдет), затем я рисую черный квадрат над строкой заголовка в области, где, как я знаю, заголовок уже нарисован, затем рисую свой собственный заголовоквместо него светло-серый вместо темно-серого.
Исходный кодздесь: https://github.com/abhibeckert/Dux/blob/master/Dux/DuxProjectWindow.m (примечание: при использовании DUX_DARK_MODE == 1) настраиваемый цвет текста заголовка возможен только в этом случае
Это может привести к блокировке вашего приложения в Mac App Store, но оно достаточно надежное,Просто убедитесь, что вы тестируете его с каждой новой основной версией OS X.