1)保存当前时间(您可以通过示例将其保存到NSUserDefaults)。 你可以做这样的事情:
NSUserDefaults *user1 = [NSUserDefaults standardUserDefaults];
NSDate *currentDate = [NSDate date];
[user1 setObject:[NSNumber numberWithDouble:[currentDate timeIntervalSince1970]] forKey:@"time"];
[user1 synchronize];
2)安排调用你的函数像你这样做是
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(moreProgress)
userInfo:Nil repeats:YES];
3)接下来在你的工作,你需要更新的东西进度视图状态这样的:
//selector progress time
- (void) moreProgress {
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
NSDate *startTime = [NSDate dateWithTimeIntervalSince1970:[[user objectForKey:@"time"]doubleValue]];
NSTimeInterval elapsedTime = [startTime timeIntervalSinceNow];
float progress = (float)elapsed time/30.0 * 60.0;
myProgressView.progress = progress;
if ((float)elapsedTime/30 * 60 >= 1)
{
// The timer is end, you should stop it and do what you need
}
}
注: 这不是安全的期望
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(moreProgress)
将每秒启动。它不能保证也不准确。
我不知道我理解你的问题。你的意思是你想让progressView花费30分钟才能变满,对吗? – 2014-11-03 14:58:13
是:)多数民众赞成在我想要的 – Andy 2014-11-03 15:06:18