【问题标题】:Animating Background image /layer in iPhoneiPhone中的动画背景图像/图层
【发布时间】:2013-02-10 15:19:26
【问题描述】:

我开始研究示例应用程序,其中我有一些在 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?

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

【问题讨论】:

标签: iphone objective-c animation ios6 uiimageview


【解决方案1】:

似乎 `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

【讨论】:

  • Vinzz:我想实现类似比赛的东西,其中人应该被动画,同时背景也应该被动画。你能告诉我我需要在这里使用什么吗。可以我在这里使用图层?
  • 无论你是使用 UIView 子类(如 UIImageView),还是直接使用 CALayer,它们都使用 CALayers 来绘制 - 所以,是的,你可以在任何地方使用图层!我们的想法是尽可能使用 UIKit(更简单的 API),如果无法获得所需的效果,请深入研究 CoreAnimation。如果您的所有动画都在 UIKit API 中定义,您应该将所有动画组合在一个 +UIView animateWithDuration:delay:options:animation: 中。此方法会自动创建一个 CATransaction 在同一个 CoreAnimation 提交上设置动画:您的动画应该是同步的...
猜你喜欢
  • 1970-01-01
  • 2010-10-23
  • 2011-01-08
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 2016-03-31
相关资源
最近更新 更多