iOS中UIImageView上的动画之间的延迟

时间:2012-08-30 11:17:24

标签: ios animation ios5

我有一个由一系列图像组成的动画,然后运行

[myUIImageView startAnimating]

我希望动画运行一次,然后停止3秒,然后重复。

我需要在一个单独的线程中运行这个动画,所以我有

NSThread *animationThread = [[NSThread alloc] initWithTarget:self selector:@selector(startAnimTask) withObject:nil waitUntilDone:NO]; 
[animationThread start];

在我的viewDidLoad中,然后是

-(void) startAnimTask {

   //create array of images here; animationDuration (3) and animationRepeatCount (1)
   [self setUpAnimation];

   while (true){
       [myUIImageView startAnimating];
       usleep(3);        
       [myUIImageView stopAnimating];
       usleep(3);    
   }
}

使用此方法,我收到内存警告。我也尝试过在MainThread上运行启动和停止,但没有运气。

有什么想法吗?

4 个答案:

答案 0 :(得分:5)

这样做:

 [myUIImageView startAnimating];
 [self performSelector:@selector(startAnimTask) 
         withObject:nil 
         afterDelay:(myUIImageView.animationDuration+3.0)];

现在选择器是:

 -(void)startAnimTask
 {
   [myUIImageView startAnimating];
   //repeat again then add above selector code line here
 }

答案 1 :(得分:1)

UI不是线程安全的,因此UI调用只能在主线程中执行,也许就是这种情况。

答案 2 :(得分:1)

我认为你可以这样做:

  [self performSelector:@selector(startAnimTask) 
             withObject:nil 
             afterDelay:0.1];

  [self performSelector:@selector(startAnimTask) 
             withObject:nil 
             afterDelay:3.0];

startAnimTask 方法中编写动画逻辑代码。

享受编码:)

答案 3 :(得分:1)

尝试使用此方法完成任务:

[self performSelector:@selector(myTask) 
             withObject:nil 
             afterDelay:3.0];

-(void)myTask{

//Write your logic for animation

}