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