2013-04-02 4 views
4

Button with nothing behind it Table loaded Button with table behind itКак разместить NSButton над NSTableView

1) Нет таблицы кнопки за 2) Таблица нагруженной 3) После того, как прокрутка

Если я устанавливаю кнопку над NSTableView я получаю после прокрутки оставлены артефакты. Кто-нибудь знает, как это исправить?

Мое настоящее решение состоит в том, чтобы разделить секцию с таблицей на 2. Нижняя часть - это отключенная кнопка в фоновом режиме.

My solution for now

+0

Возможный дубликат [Почему NSTextField оставляет артефакты над NSTableView при прокрутке таблицы?] (Http://stackoverflow.com/questions/22171410/why-does-an-nstextfield-leave-artifacts-over-an -nstableview-когда-заместитель таблицы scrol) –

ответ

0

У меня была аналогичная проблема, и решить ее, см Why does an NSTextField leave artifacts over an NSTableView when the table scrolls?. По сути OSX будет рисовать содержимое таблицы и позволить родительскому прокручивать вид переместить в кеш-содержимое, избегая перерисовки для выполнения. Подклассифицируя представление родительского прокрутки, он может быть вынужден обновить таблицу, подключая метод reflectScrolledClipView:. Затем вся таблица, включая наложения, будет перерисовываться с каждым прокруткой.

0

Попробуйте метод NSScrollView - (void)addFloatingSubview:(NSView *)view forAxis:(NSEventGestureAxis)axis Все виды таблиц обычно должны находиться внутри ScrollView.

0

Это потому, что в режиме прокрутки предусмотрено копирование содержимого при прокрутке и только перерисовка недавно обнаруженной части в качестве оптимизации производительности. Для того, чтобы превратить это прочь, используйте

myTableView.enclosingScrollView.contentView.copiesOnScroll = NO; 

хотя это сделает прокрутку использовать больше ресурсов процессора (вы также можете сделать это в XIB, обратите внимание на «копии на свитка» флажок).

Вероятно, лучше было бы, чтобы переключить вид прокрутки и кнопку, чтобы быть слой спинками:

myTableView.enclosingScrollView.wantsLayer = YES; 
myButtonView.wantsLayer = YES; 

(Опять же, вы можете установить в инспекторе «Слои» файла XIB, где вы можете щелкнуть флажок рядом с каждым представлением, чтобы дать ему слой). Теперь вид прокрутки будет копировать материал только с собственного слоя (который больше не включает вашу кнопку). Кроме того, теперь вся композиция текстового вида будет выполнена с использованием в графической карте. Это прекрасно работает с непрозрачной кнопкой, однако, если вы поместите текст на прозрачный фон на своем собственном слое (например, если у вас есть прозрачная кнопка с заголовком), вы потеряете субпиксельное сглаживание.

Смежные вопросы