IOS:如何在UIview上创建销毁效果动画

3

我想要创建一个效果,在拉伸后销毁一个视图。

可以是像气球一样“嘭”的声音,爆炸、破碎成碎片,或者简单地分裂成两半,然后逐渐淡出。但是在Quartz中我没有找到类似的效果,也没有太多的思路。

每个视图都不同,但如果没有其他办法的话,我想我会创建一个由几个可以单独动画的背景来实现。


这里有一些很酷的:http://www.cocoacontrols.com/controls/hmgltransitions,虽然没有气球或碎片那样的。 - yuf
1个回答

2
据我所知,目前没有内置此类功能,但以下内容可能会指引您朝正确的方向发展。我没有时间详细解释,但我认为您可能会从一些通用的指导方针中受益,至少在其他人能够提供示例代码或不同方法之前。
听起来您想要实现一个简单的粒子发生器,将视图渲染成图像,并将该图像馈入生成器以创建粒子,然后根据所需效果对它们进行动画处理。
可能已经存在第三方库可以实现这个功能(如果是我,我会在实现这样的东西之前先搜索一下),否则您可以采取几种方法,我只介绍基本思路:
生成器接收图像并制作一些子图像,形状与您的粒子相同(如碎片)。 您需要一种算法来确定形状和大小,然后可以在图像上使用CAShapeLayer蒙版,也可以实际渲染较小的图像(选择哪种方式需要在内存中使用较少的重复存储图像数据,例如,如果使用一个图像对象作为多个CALayers / UIImageViews的源,并使用蒙版优化仅复制其需要的像素到屏幕上而不实际复制数据,则可能是最佳选项。您可以通过搜索或作为最后的手段编写代码来确定该行为)。
一旦您拥有视图/层的集合,就可以使用另一个算法来计算给定效果的新大小/位置/旋转,并只需使用标准动画API移动由算法提供的集合的内容。 同样,实现将取决于您可能需要进行的潜在优化。 直接使用CALayer将比UIImageView的集合具有更好的性能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接