-1

我有一个由一组图像组成的动画,然后我在其上运行

[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

4 回答 4

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
 }
于 2012-08-30T11:34:39.573 回答
1

UI 不是线程安全的,所以 UI 调用应该只在主线程中执行,也许就是这种情况。

于 2012-08-30T11:25:40.063 回答
1

我认为你可以这样做:

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

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

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

享受编码:)

于 2012-08-30T11:32:34.107 回答
1

试试这种方法来完成你的任务:

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

-(void)myTask{

//Write your logic for animation

}
于 2012-08-30T11:45:18.407 回答