iPhone中的动画背景图像/图层

时间:2013-02-10 15:19:27

标签: iphone objective-c animation ios6 uiimageview

我开始研究示例应用程序,其中我有一些在UIView上动画的对象(图像)。我想要一个背景图像也应该与这些对象一起动画。两个动画应该同时发生。背景图像占据所有屏幕空间,并且在其顶部应该动画其他图像。有人可以指导我实现这一目标。

我尝试了以下链接中提到的以下内容。

  for (int i = 0; i < IMAGE_COUNT; i++)
        [_imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"D%d.png", i]]];


    _animatedImages = [[UIImageView alloc] 
                      initWithFrame:CGRectMake(
                                               (SCREEN_WIDTH / 2) - (IMAGE_WIDTH / 2), 
                                               (SCREEN_HEIGHT / 2) - (IMAGE_HEIGHT / 2) + STATUS_BAR_HEIGHT,
                                               IMAGE_WIDTH, IMAGE_HEIGHT)];

    _animatedImages.animationImages = [NSArray arrayWithArray:_imageArray];

    _animatedImages.animationDuration = 1.0;

    _animatedImages.animationRepeatCount = -1;

The iPhone Game Background as Video or Animated Image?

但是两个动画是独立发生的。我想为背景图像顶部的对象设置动画,这些对象也需要动画。如果这不可能,我可以使用图层或其他对象来实现这一点。请建议。

1 个答案:

答案 0 :(得分:0)

似乎“UIImageView”无法控制动画开始的时间。 有这样的API,但它在较低级别的CoreAnimation框架中(UIImageView必须在其实现中使用...)

您可以重新实现自己的UIImageView动画。

然后,要设置具有相对时间的不同动画,请参阅"How can I chain Core Animations for different Layers one after the other?" How to group two CABasicAnimation animations and kick them off at the exact same time?

由于您不需要在所有图层动画之间进行偏移,但希望它们同时运行,因此您应创建CAAnimationGroup,并将所有图层设置为beginTime

CAMediaTiming协议(由CAAnimation执行)非常平庸 - 但这是您感兴趣的部分:计算核心动画 - 检查this post for some API clarification