Фон прокрутки не прозрачен в NSScrollView

http://f.cl.ly/items/1b1v2D2X1D092k2R1C0i/Scrollbar.png

Привет! Я использую NSScrollView, который имеет NSTableView на основе представления. Всякий раз, когда таблица добавляет ячейку таблицы, появляются скроллеры, что нормально, пока вы не увидите, что у скроллеров нет прозрачного фона. По какой-то причине его фон белый, как вы можете видеть на изображении.

Я использовал IB для настройки NSScrollView и NSTableView, и я не могу найти какую-либо опцию, где я могу отключить фон скроллера. Есть идеи, что может быть причиной этого?

Обновление: настройки для моего NSScrollView в XCode

http://f.cl.ly/items/2R0k1x0T1X0A160E3l2i/Screen%20Shot%202012-06-29%20at%2002.06.32.png

4 ответа

Решение

Мое единственное предложение, чтобы убедиться, что ваш NSScrollers имеют стиль по умолчанию или установлен на класс, который переопределяет + (BOOL)isCompatibleWithOverlayScrollers если вы используете пользовательский скроллер.

В IB убедитесь, что "Стиль по умолчанию" выбран в разделе "Ручки скроллера", второй сверху.


OS X Lion представила новый NSScrollers (оверлейные скроллеры) в отличие от версий, представленных в Snow Leopard и до SL (устаревшие скроллеры). Оверлейные скроллеры - это тип с постепенным исчезновением и прорисовкой поверх содержимого без яркого белого фона.

В некоторых сценариях Lion решает использовать устаревший скроллер вместо новых оверлейных скроллеров (потому что, например, если подключено устройство указателя без колеса прокрутки, он не может точно прокрутить скрытый скроллер наложения)

Документация OS X 10.7 объясняет это хорошо. Подводя итог, проверьте, если a) пользователь отключил оверлейные скроллеры, b) если у вас подключено неподдерживаемое устройство, или c) вы создаете подкласс NSScroller, добавляете дополнительные представления или забыли переопределить + (BOOL)isCompatibleWithOverlayScrollers,

Если вам не нравятся устаревшие скроллеры, появляющиеся и вы хотите поддерживать не поддерживаемые устройства (например, серая полоса прокрутки, нарисованная поверх содержимого, которое не исчезает и не исчезает), вы должны создать подкласс NSScroller и нарисуйте его на заказ. Такие приложения, как Twitter для Mac, делают это.

Переопределите NSScroller и сделайте следующее. Это даст вам прозрачный фон.

- (void) drawRect: (NSRect) dirtyRect
{
    [self drawKnob];
}

Для меня в моем контроллере представления я установил стиль скроллера как:

[_scrollView setScrollerStyle:NSScrollerStyleOverlay]; 

Это заставило скроллеры иметь прозрачный фон.

Если вы хотите добиться прозрачности в NSScrollView или просто хотите получить четкий фон для просмотра с прокруткой... просто используйте setDrawsBackground свойство NSScrollView, то есть:

[scrollView setDrawsBackground:NO];

Надеюсь, это кому-нибудь поможет. Спасибо:)

Другие вопросы по тегам