4

我正在寻找一种简单直接的方法来延迟iOS应用程序中多个帧的执行,这可能吗?

4

4 回答 4

10

根据您正在做的事情的复杂性,这个小片段可能就足够了:

double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    //code to be executed on the main queue after delay
});

否则,您可以考虑NSTimer安排一些要执行的代码。你甚至可以重复一次或多次。

可以像这样使用,例如:

[NSTimer scheduledTimerWithTimeInterval:5.0 
                                 target:self 
                               selector:@selector(myMethod) 
                               userInfo:nil 
                                repeats:NO];

有关如何使用它的更多信息的好答案,请查看这篇文章,当然,请查看文档

于 2013-06-06T18:47:33.060 回答
2

如果您指的是某个恒定时间,那么执行此操作的常用方法是使用 NSTimer 在未来某个时间触发,或者使用 dispatch_after(),它可以将块分派到主队列或后台队列在未来的某个时间。

于 2013-06-06T18:43:58.263 回答
2

大卫是对的。这是我如何使用 NSTimer 的一些代码。

-(void)startAnimating {
    [NSTimer scheduledTimerWithTimeInterval:.3 target:self selector:@selector(animateFirstSlide) userInfo:nil repeats:NO];
    self.pageTurner = [NSTimer scheduledTimerWithTimeInterval:6.0 target:self selector:@selector(turnPages) userInfo:nil repeats:YES];
}

-(void)animateFirstSlide {
    [self animateSlideAtIndex:0];
}

-(void)stopPageTurner {
    [self.pageTurner invalidate];
}
于 2013-06-06T18:48:08.177 回答
1

您可以使用[NSTimer scheduledTimerWithTimeInterval: target: selector:]方法,也可以使用内置方法作为wait(time_in_seconds);.
希望这会帮助你。

于 2013-06-06T19:13:44.663 回答