我正在寻找一种简单直接的方法来延迟iOS应用程序中多个帧的执行,这可能吗?
问问题
3567 次
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 回答