Полосы прокрутки для бесконечного документа? - PullRequest
2 голосов
/ 29 апреля 2010

Существует ли стандартный способ Aqua для обработки практически бесконечного документа?

Например, представьте себе редактор уровней для игры на основе тайлов. Уровень не имеет заданного размера (хотя технически он ограничен размером NSInteger); плитки могут быть размещены в любом месте сетки. Существует ли стандартный интерфейс для прокрутки такого документа?

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

Кто-нибудь видел приложение, которое занимается этой проблемой?

Ответы [ 2 ]

7 голосов
/ 29 апреля 2010

Один из вариантов заключается в том, чтобы по существу динамически расширять область по мере ее прокрутки пользователем - каждый раз, когда пользователь прокручивает в пределах единиц X ребра, добавьте еще одну единицу в этом направлении. По сути, вы никогда не сможете прокрутить «весь путь» до края, потому что чем ближе вы становитесь, тем дальше он будет расширяться.

Если пользователь прокручивает назад от края, сжимайте его, чтобы отступить не более чем на X единиц за пределы того места, где фактически находится контент.

2 голосов
/ 29 апреля 2010

Вы видели, что Microsoft Excel делает для этой проблемы? Он также должен представлять неограниченное пространство с полосами прокрутки.

Одним из решений является определение разумного пространства для исходного размера уровня, и когда пользователь прокручивает одну плитку от своих границ, добавьте еще одну строку или столбец плиток и соответственно отрегулируйте полосу прокрутки. Таким образом, пользователь никогда не достигнет реальных границ.

Если пользователь решит сократить размер уровня, вы также можете добавить код, который сокращает «разумное пространство», если неиспользуемая строка состоит только из пустых плиток. Это спасает пользователя от застревания на огромном уровне, который он пролистал, без возможности уменьшить его.

Редактировать: То же, что и ответ Дэва. :)

...