动画效果:将按钮分成几部分

时间:2012-07-28 22:47:26

标签: iphone objective-c ios

我需要一个动画效果,类似于在按下小部件时打破按钮。使用Quartz等有没有简单的方法呢?它的外观非常灵活。

1 个答案:

答案 0 :(得分:1)

我将你的按钮图像带入图形程序并准备不同的版本,每个版本都有一个alpha通道阻挡所有的小块,图案的方式如果所有图像都堆叠在一起,他们就会看起来像整个按钮。 (为了获得更好的效果,你可以在“碎片”的边缘做一点点绘画,这样他们就可以进行一些建模了。)

您需要对应使用的文件格式进行一些研究。可能png会是最好的,但jpeg可能也会这样做。

返回Xcode,为每个“片段”制作CALayers,并将您创建的图形文件设置为CALayer的内容。当你需要进行“分手”动画时,将新的CALayers作为子图层添加到视图的图层中:

    [self.view.layer addSublayer:layerPiece]; // do this for each layer

为每个图层创建一个CAKeyimationGroup的CAKeyframeAnimations - 可能是transform.translate,transform.rotation和opacity。你可以找到那里的例子。有用的提示:旋转必须是弧度。您需要设置值以使图层旋转并彼此分开,并可能在结束时淡出。这是一个淡出动画的例子:

CAKeyframeAnimation *animFadeOut = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
animFadeOut.values = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:1.0], nil];
animFadeOut.keyTimes = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.4f], [NSNumber numberWithFloat:1.0f], nil];

最后,对于每个图层,您都会像这样设置动画:

[layerPiece3 addAnimation:animGroup3 forKey:@"arbitraryAnimPropertyString"];

这是很多工作。或者,如果您可以访问Adobe After Effects等合成程序,则可以准备动画电影(仍然需要相当多的工作,但比盲目设置关键帧数字要容易得多),只需在按钮上播放即可。我没有在iOS上播放电影,但我认为你将它设置为CALayer的内容,并将图层添加到视图中以显示和播放电影。

理想情况下,您可以使用3D软件对按钮进行建模,纹理和亮光,将粒子效果分开,渲染短片,然后将 影片应用到图层。