我有一个接口,在视图上包含几个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;
}
});
答案 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个步骤:
下面的源代码现在可以正常使用计时器:
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];
我确实在文献中找不到“时间与无时间差异”的信息,也没有找到为什么要这样做的实际原因;但它每次都有效。希望它可以帮助遇到同样问题的任何人。