iOS-如何按顺序显示大量图像
我正在开发一个应用程序,它需要按顺序翻转300张左右的图像,图像之间有2秒的延迟 这些图像是在显示过程中动态生成的条形码。它们不是存储的图像 显示器位于导航控制器中,我希望用户能够单击“后退”按钮,而不会因为选择器发送到不再存在的实例而导致应用程序崩溃 我知道可以设置UIImageView的动画,但由于内存问题,我不想创建大量图像 我想在一个循环中这样做,我生成条形码,显示图像,延迟2秒,然后重复下一个图像 以下代码可以工作,但如果单击“后退”按钮并出现“message sent to deallocated instance”错误,则会崩溃iOS-如何按顺序显示大量图像,ios,Ios,我正在开发一个应用程序,它需要按顺序翻转300张左右的图像,图像之间有2秒的延迟 这些图像是在显示过程中动态生成的条形码。它们不是存储的图像 显示器位于导航控制器中,我希望用户能够单击“后退”按钮,而不会因为选择器发送到不再存在的实例而导致应用程序崩溃 我知道可以设置UIImageView的动画,但由于内存问题,我不想创建大量图像 我想在一个循环中这样做,我生成条形码,显示图像,延迟2秒,然后重复下一个图像 以下代码可以工作,但如果单击“后退”按钮并出现“message sent to deal
NSSet *dataSet = [self fetchDataSet];
for (MyBarCode *data in dataSet) {
// display barcode in UIImageView
[self updateBarCodeImage:data ];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow: 2.0]];
}
似乎没有办法取消这个计时器,或者我可以在viewwilldisaper中这样做
正确的方法是什么
请不要只是指给我看animationImages的例子。我已经看过了所有这些图片,我不想在动画中把这些图片都保存在内存中。如果有一种方法可以在动画过程中动态生成图像,那么这将是一个有趣的过程。我认为类似的方法应该可以工作:
__weak ViewController *bSelf = self;
NSSet *dataSet = [self fetchDataSet];
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_async(myQueue, ^{
__strong ViewController *sSelf = bSelf;
for (BoardingPass *data in dataSet) {
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[sSelf updateBarCodeImage:data]
});
}
});
更新:
我不知道你到底在找什么。如果你说的是一个简单的动画,那么Cocos2D就太夸张了。在这种情况下,我建议做这个教程,它给了我很多关于我以前从事的项目的想法:
嗯,我确实找到了一种有效的方法。我启动了一个不重复的NSTimer,它调用了一个更新图像的方法,然后安排了另一个计时器在2秒钟后执行同样的操作。优点是可以在视图中取消计时器将消失。“updateBarCodeImage”做什么?它生成下一个条形码图像并在UIImageView中显示。我会使用计划的NSTimer(您可以使其无效)。另外,看看这是否有帮助:仅仅在一些图像中循环似乎有点过头了。我以前从未做过cocos2d编程,能否将cocos2d视图作为子视图添加到普通viewcontroller的视图中?例如,在您提供的示例中,没有导航栏。如果您需要导航栏,您绝对不应该选择Cocos 2D路线。