我开始研究示例应用程序,其中我有一些在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?
但是两个动画是独立发生的。我想为背景图像顶部的对象设置动画,这些对象也需要动画。如果这不可能,我可以使用图层或其他对象来实现这一点。请建议。
答案 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