Можно ли иметь очень большой DocumentView для NSScrollView? - PullRequest
2 голосов
/ 17 мая 2011

У меня действительно очень длинный набор данных, который я хотел бы отобразить в NSScrollView.

Есть ли способ указать ширину виртуального documentView в несколько миллиардов пикселей, но просто отобразить фактический размер clipViewdocumentView?Использование большого DocumentView, кажется, работает, но это не кажется правильным.

Я бы использовал обычный ol'NSView, но я хотел бы получить возможности прокрутки мышью / жестами.бесплатно.

1 Ответ

2 голосов
/ 09 июня 2011

Если вы используете стандартное представление документа (NSClipView), единственными пикселями, которые будут отображаться, являются те, которые находятся внутри contentSize вида прокрутки, которому он назначен. Так что если вы установите разумный маленький размер содержимого scrollview, он должен отображаться нормально независимо от того, насколько велики границы documentView.

Если вас беспокоит загрузка большого количества данных в память, подумайте о том, чтобы разбить данные на части. Каждый фрагмент должен быть несколько больше, чем может отображать contentSize в scrollview. Контролируйте положение прокрутки, чтобы, когда оно приблизилось к краю содержимого, отображаемого в данный момент, вы подготовились к загрузке следующего фрагмента.

Просто чтобы избежать путаницы:

// How to determine the size of the area that will be displayed:
NSSize sizeOfDisplay = [scrollView contentSize]; 
// How to determine the full size of the content you have loaded:
NSRect rectFullContent = [[scrollView documentView] bounds];
NSSize sizeFullContent = rectFullContent.size;
...