打开帷幕:动画与核心动画

Ste*_*fan 5 iphone animation cocoa-touch core-animation

我想要制作一个可以打开的窗帘.我有两个图像:一个用于左侧,一个用于窗帘的右侧(用红色表示).我想用Core Animation顺利地将它们移开.我应该寻找什么动画类型?如何实现逼真的滑动风格?

问候,

斯特凡

替代文字http://img.skitch.com/20100627-8ytxrbe64ccbruj49c2pbs7kt2.png

Mat*_*ong 5

我不确定为什么人们建议使用翻译.如果您只需要滑动图像,只需在动画块内的每个图像视图上调用-setCenter即可.像这样:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[leftCurtainImageView setCenter:pointOffScreenLeft];
[rightCurtainImageView setCenter:pointOffScreenRight];
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

其中pointOffScreenLeft和pointOffScreenRight的计算方式如下:

CGPoint pointOffScreenLeft = CGPointMake(
                 -[leftCurtainImageView bounds].size.width, 
                 [leftCurtainImageView frame].origin.y);

CGPoint pointOffScreenRight = CGPointMake(
                 [rightCurtainImageView frame].origin.x + 
                 [rightCurtainImageView bounds].size.width, 
                 [leftCurtainImageView frame].origin.y);
Run Code Online (Sandbox Code Playgroud)

这些计算假设窗帘分别位于其包含视图的最左边和最右边.


Tec*_*Zen 1

最简单的解决方案是必须使用 imageview 或 CGLayers,然后在动画块中使用 CGAffineTransformTranslate 将它们滑出屏幕。