我需要能够在静态图像上显示动画。
鉴于 MPMoviePlayer 无法让您控制任何有用的东西,我认为做到这一点的唯一方法是使用多个静态图像,我们(逐一)显示这些图像以创建“类似电影”的动画。
我知道我们可以使用 UIImageView 来做到这一点(通过设置 UIImageView动画图像属性,然后调用开始动画),但是我们的动画中将包含超过 100 个图像 - 因此内存使用量将达到最大。
有人有制作这种动画的好方法吗?使用核心动画还是 OpenGL?
我的猜测是,我们需要创建一个图像缓冲区,当我们加载新图像时,我们会显示图像缓冲区中的图像?
您可以使用核心动画 CALayer 来托管动画,并在主层中交换一系列 CALayer 来执行逐帧动画。您可以使用其内容属性将图像帧托管 CALayer 的内容设置为 CGImageRef。可以根据需要创建一系列包含图像的 CALayers 并将其存储在 NSMutableArray 中,然后在完成后删除以最大限度地减少内存使用。
您可以通过将replaceSublayer:with:方法调用包装在CATransaction中来设置帧之间的过渡持续时间,如下所示:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:0.25f] // 1/4th of a second per frame
forKey:kCATransactionAnimationDuration];
[mainLayer replaceSublayer:[imageLayers objectAtIndex:oldImageIndex] with:[imageLayers objectAtIndex:newImageIndex]];
[CATransaction commit];
如果您的帧显示时间足够短,您也可以在主图层内容中换入和换出 CGImageRef。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)