Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 动画效果:将按钮分解为多个部分_Iphone_Objective C_Ios - Fatal编程技术网

Iphone 动画效果:将按钮分解为多个部分

Iphone 动画效果:将按钮分解为多个部分,iphone,objective-c,ios,Iphone,Objective C,Ios,我需要一个动画效果类似于打破按钮在小部分时,它被按下。有没有一种简单的方法可以用石英等来做。?它看起来很灵活 我会把你的按钮图像放到一个图形程序中,并准备不同版本的按钮,每个版本都有一个阿尔法通道,用一小块挡住所有的按钮,如果所有的图像都叠在一起,它们看起来就像整个按钮。(为了获得更好的效果,您可以在“碎片”的边缘上进行一些绘制,以便对其进行一些建模。) 您需要对应该使用的文件格式做一些研究。也许png最好,但jpeg也可以 回到Xcode,为每个“工件”制作CALayer,并将您创建的图形文件

我需要一个动画效果类似于打破按钮在小部分时,它被按下。有没有一种简单的方法可以用石英等来做。?它看起来很灵活

我会把你的按钮图像放到一个图形程序中,并准备不同版本的按钮,每个版本都有一个阿尔法通道,用一小块挡住所有的按钮,如果所有的图像都叠在一起,它们看起来就像整个按钮。(为了获得更好的效果,您可以在“碎片”的边缘上进行一些绘制,以便对其进行一些建模。)

您需要对应该使用的文件格式做一些研究。也许png最好,但jpeg也可以

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

    [self.view.layer addSublayer:layerPiece]; // do this for each layer
并为每一层制作一组caKeyframeAnimation——可能是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软件对按钮进行建模、纹理和照明,使用粒子效果将其分解,渲染一个短电影,然后将该电影应用到该层