вы устанавливаете curXLoc в своем коде, но никогда не устанавливаете его местоположение y, вы не можете ожидать изменения размера прокрутки и того, чтобы оно начало загружать содержимое в дополнительное пространство, если вы не измените свой код компоновки, чтобы учесть местоположение y.
У меня был бы некоторый код, который проверяет доступную высоту (y), и, если места достаточно, добавьте дополнительную строку.Вам нужно будет решить, будете ли вы сначала заполнять строки или столбцы, потому что это повлияет на порядок отображения элементов
из вашего кода. Кажется, вы хотите сначала заполнить строки, поэтому вам нужно будет определить, сколько элементовв строке и измените код зацикливания, чтобы он перемещал значение x обратно в начало, когда начинается новая строка ... нет никакого автоматизированного способа сделать это, даже ваш собственный код показывает, что вы просто корректируете значения x ...
эта строка кода
frame.origin = CGPointMake(curXLoc, 0);
имеет литерал 0 для y, вам нужно добавить дополнительную логику, чтобы решить, будете ли вы корректировать значение y на основе высоты представления прокрутки