Ответ 1
Отвечая на ваш вопрос
Рисунок чертежа вне его границ обычно не имеет значения. При использовании чередующихся цветов фона NSTableView напрямую рисует фон. Но в представлении таблицы, основанном на представлении, используется NSTableRowView, и если он имеет свой собственный цвет фона, это создает еще большую проблему.
Плохая новость
Сборка NSScrollView (и ее различных частей), NSTableView и NSTableHeaderView сложна сама по себе. После того, как вы добавите функциональность, основанную на просмотре, в микс (где каждая строка имеет представление, и каждая ячейка имеет свой собственный вид, и каждый из них повторно используется, анимируется и т.д.), Переопределяя это поведение "не может пройти через жизнь, сын!"; -)
Хорошие новости
Проблема с чередованием цветов фона, не распространяющихся в прорисовке с прокрученной таблицей с эластичной растяжкой, была разрешена (по крайней мере, на 10.10, что я могу сказать), поэтому это уже не проблема, если у вас нет представлений row/cell с пользовательскими фоны или только цвета фона.
Общее решение для пользовательских документов (прокрученных) представлений
Для всех других прокрученных видов с эмпирическим фоном, которые вы хотите расширить для гибкой прокрутки, вам понадобится собственный подкласс NSScrollView, который ожидает, что представление документа (ваше настраиваемое прокрученное представление) будет соответствовать протоколу, который вы определяете (например, -(NSImage *)backgroundImageForClipViewBounds:
). В представлении прокрутки будет отображаться его просмотр содержимого (NSClipView) для уведомлений об изменении границ и сам флаг для отображения. Когда вызывается просмотр прокрутки -drawRect:
, он затем запрашивает прокручиваемое представление для своего -backgroundImageForClipViewBounds:
(через ваш протокол) и втягивает его в себя, тем самым делая прокрученный вид "бесконечным фоном" своим.
Я не тестировал эту теорию, но я считаю, что это сработает. Надеюсь, это поможет.