Я пытаюсь создать анимацию переключения размера для этого простого пользовательского класса TUIScrollView (из проекта с открытым исходным кодом TwUI и очень похожего на UIScrollView), который я построил.Он называется TUILayout и поддерживает горизонтальное расположение, а также вертикальные анимированные вставки и удаления и имеет более декларативный способ передачи данных в его ячейки, который я предпочитаю перед делегированием.Это повторяет представления, подобные TUITableView или UITableView.В любом случае, если вы хотите следовать, это всего лишь один класс и здесь.
https://github.com/mrjjwright/TUILayout.
В примере кода пользователь нажимает синюю кнопку в левом нижнем углу и все строкиплавно сжиматься до размера, при котором пользователь может изменить порядок и удалить некоторые строки (щелкните правой кнопкой мыши по строке в примере, чтобы увидеть это в действии) и т. д., а затем пользователь переключает строки обратно к их первоначальному размеру, нажимаяснова синюю кнопку.
При этом изменяйте размер в setObjectHeight:animated
Сначала я изменяю размеры объектов моей модели, представляющих строки, пересчитываю и устанавливаю contentSize в TUIScrollView, циклически повторяю все новые представления (скажем, еще 10 представлений будутвписывается в уменьшенное представление, поэтому dequeueReusableView и addSubview вызывают 10 раз) и, наконец, я анимирую кадры всех представлений в соответствии с их размером и расположением в layoutSubviews.
В результате прокручиваемый вид корректно сжимается до размера, при которомполоса прокрутки больше не отображается, изображения, отображаемые на экране, плавно переходят к уменьшениюразмер CED, но только что добавленные подпредставления, которые теперь могут вписаться в visibleRect, анимируются гораздо позже как один блок подпредставлений.
Таким образом, все вновь добавленные подпредставления отстают от представлений, которые были на экране, и я могу 'не могу понять, почему анимация не все происходит вместе.Я перепробовал много разных комбинаций без удачи, включая CATransactions.Мне интересно, если это связано с тем, как работает CAScrollLayer или кто-то может помочь мне продумать это.
Более общая проблема заключается в том, как плавно обрабатывать анимации изменения размера на скролл-представлениях, которые повторяют их представления, и я рассмотрел несколько других сеток в мире iOS и получил некоторое вдохновение, но ищу больше.
Спасибо!