我有一个由一系列图像组成的动画,然后运行
[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上运行启动和停止,但没有运气。
有什么想法吗?
答案 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
}