我想在这个简单的自定义TUIScrollView类(从TwUI开源项目和非常类似于UIScrollView),我已经建立一个调整大小切换动画。它被称为TUILayout,并支持水平布局以及垂直,动画插入和删除,并且有更多的声明性方式将数据提供给它的单元格,我更喜欢委派。它回收类似于TUITableView或UITableView的视图。无论如何,如果你想跟随,这只是一个类,并在这里。在滚动视图上调整动画
https://github.com/mrjjwright/TUILayout。
在示例代码中,用户单击左下角的蓝色按钮,所有行平滑缩小到用户可以重新排序和删除某些行的大小(在示例中的某一行右键单击以查看此内容操作)等等,然后用户再次单击蓝色按钮将行切换回原始大小。
虽然这样调整在setObjectHeight:animated
我第一次调整是代表行我的模型对象,重新计算并设置contentSize的TUIScrollView,循环中的所有新的观点(比如说10多个视图将适合在收缩视图,以便dequeueReusableView和addSubview被调用10次),最后我将所有视图的框架设置为layoutSubviews中的大小和位置。
其结果是scrollview正确缩小到滚动条不再显示的大小,屏幕上的视图平滑地缩小到缩小的大小,但新添加的子视图现在可以放入visibleRect动画中很久以后作为一个子视图块。
因此,所有新添加的子视图滞后于屏幕上的视图,我无法弄清楚为什么动画并非全部一起发生。我已经尝试了很多不同的组合,包括CATransactions。我想知道是否必须如何CAScrollLayer的工作,或者如果有人可以帮助我通过这个想法。
更普遍的问题是如何顺利处理滚动视图上调整大小的动画,以回收视图,并且我已经查看了iOS世界中的其他几个网格,并且获得了一些灵感但仍在寻找更多。
谢谢!