我有一个使用相机的应用程序,覆盖了枪形图像以及火灾和重新加载按钮。在视网膜iPad和iPhone上,它可以在大约一秒内循环拍摄30张图像用于发射动画,在2秒内循环播放41张图像用于重新加载动画。所有图像都是1920 x 1080,在iPhone上它们是1000 x 533.例如,当点击开火按钮时循环显示.pngs,我在PlayViewController.m文件中使用它:
- (IBAction)fire:(id)sender {
// Play the firing animation for the rifle, enable reload button
fireButton.enabled = NO;
type.animationImages = gunanimload;
type.animationDuration = 1.0;
type.animationRepeatCount = 1;
reloadButton.enabled = YES;
[type startAnimating];
在viewDidLoad方法中,我创建数组并使用images加载它:
- (void)viewDidLoad
{
[super viewDidLoad];
UIImage* img1 = [UIImage imageNamed:@"rev0001.png"];
... x30
gunanimload = [NSArray arrayWithObjects:img1, ... x30, nil];
}
即使它应该在视图加载时加载数组,它仍然可以在点击Fire按钮时执行此操作。我该如何消除这种延迟?或者是否有(相对简单的)替代方法来玩火并重新加载动画?
答案 0 :(得分:1)
UIImage imageNamed方法在显示需要之前不会加载图像。有一些方法可以预先加载图像。
阅读本文以获取更多信息: CGImage/UIImage lazily loading on UI thread causes stutter