UIScrollView с плитками с отрицательным происхождением - PullRequest
2 голосов
/ 04 января 2011

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

scrollViewBounds = CGRectUnion(newTileBounds, scrollViewBounds);
[scrollView setContentSize:scrollViewBounds.size];

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

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

Как сделать так, чтобы плитки с отрицательным происхождением были видны?

Ответы [ 2 ]

0 голосов
/ 04 января 2011

Технически, отрицательное происхождение находится за пределами области просмотра прокрутки.Если ваш объект выходит за пределы этой области, вам необходимо полностью воссоздать область, установить смещение, чтобы он выглядел так, как будто вы его не воссоздали, а затем переместить содержимое в поле зрения.Или переместите и содержимое, и точку так, чтобы они выглядели так, как будто они будут прокручиваться в этом направлении (если это имеет смысл) ...

Абстрактно, вот как вы разместите содержимое:

if(object.origin.x < 0) {
 contentArea.origin.x = -contentArea.bounds.width;
 object.origin.x = contentArea.bounds.width + object.origin.x;
}

Надеюсь, это поможет!

0 голосов
/ 04 января 2011

Вы можете начать с середины просмотра контента, а для contentSize задан максимально возможный размер. Таким образом, вам не нужно динамически регулировать размер контента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...