执行期间在UIImageView中更新图像?

时间:2014-06-04 22:30:58

标签: ios uiimageview

我有一个接口,在视图上包含几个UIImageView组件,我想在运行时更新动画图像。

主要思想是将动画图像更改为延迟为2秒的线程。下面的代码工作正常。但是,当我引入睡眠时间时(使用注释的NSThread sleepForTime);它不再有效。我确信有合理的解释,但我无法识别它。

重要的是要注意动画已经与另一组动画图像一起运行。 任何帮助或提示都非常受欢迎:)

        dispatch_async(allowToTouchThread, ^{

            //[NSThread sleepForTimeInterval:2.0];
                int randomnReward =  0;
                WizzReward* currentReward = [rewardListForPages objectAtIndex:randomnReward];
                WizzAnimalModel* animalModel = [gameLevelManager getAnimalModelByCategoryId: [currentReward getAnimalId]];

                NSMutableArray* expressionsForAnimals = [animalModel getArrayForClosedEyesFaceExpression];
                float animationDuration = [animalModel getStandardRewardAnimationDuration];
                pageContentViewController.imagesArrayFileLevel1  = expressionsForAnimals;
                pageContentViewController.animationLevel1Duration = animationDuration;
            }

});

2 个答案:

答案 0 :(得分:0)

如何将dispatch_async替换为dispatch_after并将延迟设置为2秒:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    int randomnReward =  0;
    WizzReward* currentReward = [rewardListForPages objectAtIndex:randomnReward];
    WizzAnimalModel* animalModel = [gameLevelManager getAnimalModelByCategoryId: [currentReward getAnimalId]];

    NSMutableArray* expressionsForAnimals = [animalModel getArrayForClosedEyesFaceExpression];
    float animationDuration = [animalModel getStandardRewardAnimationDuration];
    pageContentViewController.imagesArrayFileLevel1  = expressionsForAnimals;
    pageContentViewController.animationLevel1Duration = animationDuration;
});

答案 1 :(得分:0)

无需任何计时器即可更改动画图像,可以通过修改图像数组直接完成。

但是,使用计时器更改相同的动画图像需要3个步骤:

  • 首先修改图像数组
  • 第二个UIView AnimationImages与修改过的图像数组的实际重新关联;
  • 最后开始动画UIView事件,尽管事先没有停止过

下面的源代码现在可以正常使用计时器:

WizzReward* currentReward = [rewardListForPages objectAtIndex:0];
WizzAnimalModel* animalModel = [gameLevelManager getAnimalModelByCategoryId: [currentReward getAnimalId]];
NSMutableArray* expressionsForAnimals = [animalModel getArrayForClosedEyesFaceExpression];



pageContentViewController.imagesArrayFileLevel1 = expressionsForAnimals;
pageContentViewController.reward1CurrentPage.animationImages = pageContentViewController.imagesArrayFileLevel1;
[pageContentViewController.reward1CurrentPage startAnimating];

我确实在文献中找不到“时间与无时间差异”的信息,也没有找到为什么要这样做的实际原因;但它每次都有效。希望它可以帮助遇到同样问题的任何人。