NSTabView с цветом фона

Как обсуждалось в другом месте, NSTabView не имеет метода setBackgroundColor, и подклассы NSTabView и использование drawRect для управления им больше не работают - так как он не рисует верхние 10%, бит чуть ниже сегментированной кнопки управления.

Теперь я немного удивлен количеством обходных путей, которые мне пришлось сделать, чтобы решить эту проблему; видеть

код:https://github.com/dirkx/CustomizableTabView/blob/master/CustomizableTabView/CustomizableTabView.m

и мне интересно, если я пошел по неправильному пути. И как это сделать лучше и проще:

Кажется, NSSegmentStyleTexturedSquare дает мне полупрозрачный сегментированный элемент управления. Это означает, что мне нужно проделать дополнительную работу, чтобы скрыть любые линии рамки (строка 240, 253).

Есть лучший способ сделать это ? То есть отрицать его прозрачность?

или есть способ, которым я могу использовать фактическую / оригинальную сегментированную кнопку выбора?

Я обнаружил, что нужные мне цвета - например, [NSColor windowBackgroundColour] - не установлены на что-либо полезное (то есть, тот, который прозрачен) - поэтому сейчас я жестко их кодирую (строки 87, 94).

Есть лучший способ сделать это ?

Я нахожу, что мне нужно множество пушистых методов для синхронизации вещей (строки 128, 134 и т. Д.).

можно ли этого избежать?

Я считаю, что имитация ловкости при изменении масштаба означает, что мне нужно постоянно следить за сегментированным блоком управления и удалять / изменять его размер. И даже тогда - это не так хорошо, как оригинал

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

SegementControl исчезает, когда фокус убирается из окна - в отличие от настоящего Маккоя.

это можно легко предотвратить? Есть ли дешевый способ отследить это?

Или это неправильный подход - и я должен сосредоточиться только на прозрачной дыре здесь - и позволить NSTabViewItem нарисовать фон? Но в любом случае - тогда у меня все еще есть проблема с блоком Segemented COntrol - или есть какой-то способ сделать это снова по умолчанию.

при попытке это - я застреваю на верхних 20-30 пикселях, нарисованных в «реальном» цвете фона окон - который является «прозрачным» - и, следовательно, цвет не будет проходить до самого верха или позади линейки сегментов и до лицевой панели - но вместо этого остановите около 8 пикселей ниже нижней части сегмента управления.

Обратная связь приветствуется - поскольку это кажется таким далеким / неоптимальным для таких простых вещей - Большое спасибо. Брауни указывает на взлом / разветвление кода на github :) :) :) Как строка исполняемого кода говорит более тысячи слов.

Dw.

Ответы на вопрос(3)

Ваш ответ на вопрос