Кажется, вы прокручиваете эту штуку вертикально (вы упомянули разную высоту изображения).
В UIScrollView
нет ничего, что могло бы сделать это за вас. Вам придется отслеживать ваши UIImageView
подвиды вручную. Вы можете просто поддерживать максимальную координату y, занимаемую вашими изображениями, когда вы их добавляете.
Вместо этого вы можете рассмотреть возможность использования UITableView
и реализации очень настроенного tableView:heightForRowAtIndexPath:
в своем делегате. Вам, вероятно, потребуется сделать что-то особенное и с реальными ячейками, но, похоже, это немного облегчит вашу работу.
Кроме того, вы можете найти способ избежать создания бесконечного решения. Будьте осторожны с объемом памяти! iOS отключит ваше приложение, если что-то выйдет из-под контроля.
ОБНОВИТЬ
Хорошо, теперь я понимаю, что вы собираетесь. Я вообразил, что вы представляете фотографии или что-то прямоугольное в этом роде. Если бы я пытался покрыть вид прокрутки с помощью UILeaf
s (wah wah), я бы использовал статистический подход. Я бы «рисовал» листья случайным образом вдоль горизонтальных/вертикальных полос по мере прокрутки пользователем. Возможно, это то, что вы уже делаете? Что бы ты ни делал, я думаю, это выглядит хорошо.
Теперь я предполагаю, что причина, по которой вы спрашиваете, заключается в том, чтобы предотвратить появление маленьких случайных белых пятен, которые просвечивают - это верно? Если я могу предложить другое решение: попробуйте покрасить фон вашего прокрутки во что-то приземленное, что выглядит хорошо, если оно просвечивает здесь и там.
Кроме того, мне пришло в голову, что вы можете использовать более крупное изображение шаблона — то, что уже имеет хорошее распределение листьев — с прозрачностью по всему внешнему контуру листьев, но больше нигде. Затем вы можете разбить их, но с перекрытием, чтобы альфа-канал только просвечивал до листьев внизу. У вас может быть несколько таких изображений, чтобы они не выглядели очевидными. Это устранит всю неопределенность и сделает вашу переработку очень эффективной.
Кроме того, рекомендуем ознакомиться с CoreAnimation (CALayer в частности) и CoreGraphics/Quartz 2D ). Правильное использование этих библиотек, вероятно, значительно улучшит скорость рендеринга.
ОБНОВЛЕНИЕ 2:
Если все ваши изображения имеют ширину 150 пикселей, разделите прокрутку на столбцы и добавляйте/удаляйте на их основе (как обсуждалось в чате).
Удачи!
person
QED
schedule
06.03.2012