Как сделать NSSplitView прозрачным без исчезновения сплиттера?

Я расширил свое окно, чтобы оно имело границу содержимого кнопки. Проблема в том, что мой NSSplitView перекрывает границу. Мои мысли заключались в том, что я мог бы сделать разделенный вид прозрачным (но элементы управления поверх него непрозрачными).

На следующем изображении показано, что я ищу, но с отсутствующим сплиттером:

Снимок экрана с отсутствующим разделителем

Посмотрите, как в нижней части окна есть кнопка. Это эффект, которого я пытаюсь достичь, но безуспешно. Код, который я пытаюсь использовать:

CALayer *transparentViewLayer = [CALayer layer];
[viewLayer setBackgroundColor:CGColorCreateGenericRGB(
                                                      256.0,
                                                      256.0,
                                                      256.0,
                                                      0)]; //RGB plus Alpha Channel
[splitView setWantsLayer:YES]; // view's backing store is using a Core Animation Layer
[splitView setLayer: transparentViewLayer];

Если я НЕ устанавливаю TransparentViewLayer, то получаю следующее:

Разделить, но скрыть нижнюю панель

Который показывает спиттер, но скрывает нижнюю панель окон. Я также попытался создать подкласс NSSplitView и добавить следующее:

- (void) drawRect: (NSRect) dirtyRect
{
    [[NSColor colorWithSRGBRed: 0.0 green: 255.0 blue: 0.0 alpha: 155.0] setFill];
    NSRectFill(dirtyRect);
} // End of drawRect

Что оставило меня с зеленым сплиттером и без альфы для нижней панели Windows. Любые идеи о том, как я могу добиться эффекта, который я ищу? (Мне нужна нижняя панель с моими кнопками и видимым разделителем).


person Kyle    schedule 14.01.2013    source источник


Ответы (1)


В своем подклассе не переопределяйте -[NSSplitView drawRect:]. Вместо этого переопределите -drawDividerInRect: и нарисуйте разделитель ТОЛЬКО в этом прямоугольнике. Всегда проконсультируйтесь с документацией сначала, если вы хотите "подчинить" класс своей воле.

person Joshua Nozzi    schedule 15.01.2013