Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-如何按顺序显示大量图像_Ios - Fatal编程技术网

iOS-如何按顺序显示大量图像

iOS-如何按顺序显示大量图像,ios,Ios,我正在开发一个应用程序,它需要按顺序翻转300张左右的图像,图像之间有2秒的延迟 这些图像是在显示过程中动态生成的条形码。它们不是存储的图像 显示器位于导航控制器中,我希望用户能够单击“后退”按钮,而不会因为选择器发送到不再存在的实例而导致应用程序崩溃 我知道可以设置UIImageView的动画,但由于内存问题,我不想创建大量图像 我想在一个循环中这样做,我生成条形码,显示图像,延迟2秒,然后重复下一个图像 以下代码可以工作,但如果单击“后退”按钮并出现“message sent to deal

我正在开发一个应用程序,它需要按顺序翻转300张左右的图像,图像之间有2秒的延迟

这些图像是在显示过程中动态生成的条形码。它们不是存储的图像

显示器位于导航控制器中,我希望用户能够单击“后退”按钮,而不会因为选择器发送到不再存在的实例而导致应用程序崩溃

我知道可以设置UIImageView的动画,但由于内存问题,我不想创建大量图像

我想在一个循环中这样做,我生成条形码,显示图像,延迟2秒,然后重复下一个图像

以下代码可以工作,但如果单击“后退”按钮并出现“message sent to deallocated instance”错误,则会崩溃

   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路线。