UIImageView不会使用CGImage的UIImages进行动画处理

时间:2013-10-06 21:07:48

标签: objective-c animation uiimageview uiimage cgimage

我有一个UIImageView,我试图通过翻转其他UIImages来创建一组UIImages的动画。这是我的代码:

    turtle = [[UIImageView alloc] initWithFrame:CGRectMake(self.view.frame.size.width-200,
                                                                    self.view.frame.size.height - sand.frame.size.height - turtle.frame.size.height - 10 - heightOfKeyboard,
                                                                    100,100)];
[flippedTurtleArray addObject:[UIImage imageWithCGImage:[UIImage imageNamed:@"Turtle1.png"].CGImage scale:1 orientation:UIImageOrientationDownMirrored]];
[flippedTurtleArray addObject:[UIImage imageWithCGImage:[UIImage imageNamed:@"Turtle2.png"].CGImage scale:1 orientation:UIImageOrientationDownMirrored]];
[flippedTurtleArray addObject:[UIImage imageWithCGImage:[UIImage imageNamed:@"Turtle3.png"].CGImage scale:1 orientation:UIImageOrientationDownMirrored]];
[flippedTurtleArray addObject:[UIImage imageWithCGImage:[UIImage imageNamed:@"Turtle2.png"].CGImage scale:1 orientation:UIImageOrientationDownMirrored]];
[self.view addSubview: turtle];

问题是,当我尝试从翻转图像阵列中制作动画时,它会显示原件,而不是翻转的原件(即,当我这样做时):

turtle.animationImages = flippedTurtleArray;
turtle.animationDuration = 0.8f;
turtle.animationRepeatCount = 0;
[turtle startAnimating];

显示原始的非翻转图像。

现在,如果我这样做:

turtle.image = [flippedTurtleArray objectAtIndex:1];

显示翻转的图像。我想也许你不能用CGImage做动画,但是找不到其他人有同样的问题。有什么想法吗?

谢谢,

萨姆

1 个答案:

答案 0 :(得分:0)

我会查看CGLayer属性,特别是图层的transform属性。

Transform属性是可动画的,允许您将任意变换应用于原始图像,而无需管理中间翻转的Turtle Array。

应用于图层内容的变换。动画。

@property CATransform3D转换 讨论 默认情况下,此属性设置为标识转换。您应用于图层的任何变换都是相对于图层的锚点发生的。

状况 适用于iOS 2.0及更高版本。 相关示例代码 oalTouch 宣告进入 CALayer.h

如果您有其他理由想要数组,那么您可能希望将翻转的图像渲染为单独的图像,并将其传递到数组中。

同样,如果你可以使用iOS 7作为目标,看一下SpriteKit,它可以使整个任务变得更加简单。