3

我想创建一个效果来在拉伸后破坏视图。

它可以是像气球一样的流行音乐,爆炸,分裂成碎片,类似的东西,甚至只是简单地分成两半,然后我会淡出碎片。但是我在石英中没有发现任何类似的东西,或者对如何做到这一点有很多想法。

每个视图都彼此不同,但如果没有其他方法,我想我会创建一个可以单独动画的几个片段的背景。

4

1 回答 1

2

AFAIK 这种事情没有内置功能,但以下内容可能会为您指明正确的方向。我没有时间详细说明,但我觉得您可能会从一些通用指南中受益,至少在其他人可以提供示例代码或不同方法之前。

听起来您想实现一个简单的粒子生成器,将视图渲染为图像,然后将该图像输入生成器以创建粒子,然后根据所需效果为它们设置动画。

可能有现有的第三方库可以做到这一点(在实现类似的东西之前我会四处搜索),否则你可以采取一些方法,我只是给出基本的想法:

生成器获取图像并制作一些粒子形状的子图像(如碎片)。您需要一种算法来计算形状和大小,然后您可以在图像上使用 CAShapeLayer 蒙版或实际渲染较小的图像(如果使用一个图像对象作为带有掩码的多个 CALayers/UIImageViews 的源经过优化,仅将其需要的像素复制到屏幕上,而实际上并不复制数据,那么这可能是您的最佳选择。您可以通过四处搜索或作为最后的写作手段来确定该行为代码)。

一旦您拥有了视图/图层的集合,您可以使用另一种算法来计算给定效果的新尺寸/位置/旋转,并且只需使用标准动画 api 来移动由算法提供的集合的内容。同样,实施将取决于您可能需要进行的潜在优化。直接使用 CALayer 会比 UIImageViews 的集合有更好的性能。

于 2012-10-19T20:28:39.273 回答