2010-04-28 3 views
2

Есть ли стандартный способ Aqua для обработки практически бесконечного документа?Полосы прокрутки для бесконечного документа?

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

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

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

ответ

7

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

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

+0

Полностью интуитивно понятный. Благодаря! – andyvn22

+1

Я только что обнаружил, что Inkscape использует это решение, если кто-то хочет увидеть его в действии в бесплатном приложении. – andyvn22

2

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

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

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

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

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