Кажется, что вы прокручиваете эту вещь по вертикали (вы упомянули различное изображение высоты).
В UIScrollView
ничего не создано, что сделает это за вас. Вам нужно будет отследить ваши просмотры UIImageView
вручную. Вы можете просто поддерживать координату max y, занимаемую вами изображениями, когда вы их добавляете.
Вместо этого вы можете использовать UITableView
и внесите в свой делегат настроенный tableView:heightForRowAtIndexPath:
. Вам, вероятно, понадобится сделать что-то особенное с фактическими ячейками, но это, похоже, сделает вашу работу немного легче.
Кроме того, для чего вы можете найти способ избежать принятия решения бесконечный. Будьте осторожны с вашей памятью! iOS отключит ваше приложение, если все выйдет из-под контроля.
UPDATE
Хорошо, теперь я понимаю, что вы собираетесь. Я подумал, что вы представляете фотографии или что-то такое прямоугольное. Если бы я пытался покрыть вид прокрутки UILeaf
(wah wah), я бы взял статистический подход. Я бы «рисовал» листья случайным образом вдоль горизонтальных/вертикальных полос по мере прокрутки пользователя. Возможно, это вы уже делаете? Что бы вы ни делали, я думаю, что это выглядит хорошо.
Теперь я предполагаю, что причина, по которой вы просите, состоит в том, чтобы предотвратить появление маленьких случайных белых пятен - это правильно? Если я могу предложить другое решение: попробуйте покрасить фон вашего вида прокрутки на что-то земное, которое выглядит хорошо, если оно показывает здесь и там.
Кроме того, мне пришло в голову, что вы можете использовать изображение большего размера - то, что уже имеет хорошее распределение листьев - с прозрачностью по всему внешнему контуру листьев, но нигде больше. Затем вы можете их переделать, но с перекрытием, чтобы альфа просто показывала листья ниже. У вас может быть несколько таких изображений, чтобы они не выглядели очевидными. Это уберет всю неопределенность и сделает вашу ретилизацию очень эффективной.
Кроме того, рассмотрите информацию о CoreAnimation (CALayer) и CoreGraphics/Quartz 2D). Правильное использование этих библиотек, вероятно, даст большие улучшения в скорости рендеринга.
UPDATE 2:
Если ваши изображения все 150px в ширину, а затем разделить ваш Scrollview в столбцы и добавить/удалить на основе этих (как описано в чате).
Удачи вам!
Мое scrollview имеет возможность прокрутки в любом направлении, поэтому я не мог использовать табличное представление для этого. Что касается его бесконечности, он не распространяется бесконечно, он только перемещает изображения, находящиеся в настоящее время на экране, в противоположное направление прокрутки, а когда есть более 20 подзонов, я удаляю первый, который был добавлен, и так далее. –
Если он прокручивается в обоих направлениях, то я не понимаю концепцию, которую вы используете в отношении макета этих изображений в прокрутке. Можете ли вы добавить некоторую ясность? Может быть, скриншот того, что у вас уже есть? – QED
Вот пример: http://twitpic.com/8slalg - так что вся область, которую я добавил, выходит сверху, имеет разные образы изображений. Теперь изображение, которое я не помещал на листья, должно быть немедленно добавлено под надписью над ним и справа от левой слева. Мой вопрос в том, как найти точные (x, y), где должно идти изображение, не тратя слишком много процессорного времени? –