在我的应用程序中,我有一个UIProgressView需要每5分钟增加+0.1。这样做的方法,但我知道我有一个问题,因为我想计算progressview五分钟,即使我的应用程序然后关闭应该依赖于实时(iphone时钟)而不是当我的应用程序打开时...我会解释
我知道要做到这一点我应该使用NSDate但不能以正确的方式实现它,有人可以通过一个例子来帮助我更好地理解如何实现它吗?
谢谢大家
用几句话我所寻找的是增加uiprogressview必须从时钟iphone分钟获得...这必须发生的是如果应用程序打开或关闭....再来一分钟uiprogressview必须更改。 ..简而言之,这应该是来自用户的恢复能量
答案 0 :(得分:1)
我认为你应该:
NSDate *startDate = [NSDate new];
将实际开始日期保存到NSUserDefaults:
[[NSUserDefaults standardDefaults] setObject: startDate forKey: @"MyKey"];
NSTimeInterval secondsBetween = [[NSDate new] timeIntervalSinceDate: savedDate];
ViewWillAppear
中)划分结果: progress = secondsBetween/(5*60) * 0.1
如果您希望在ViewController处于活动状态后每个时间单位后刷新进度,则应使用NSTimer:
[NSTimer scheduledTimerWithTimeInterval: (5 * 60)
target:self
selector:@selector(refreshProgressMethod)
userInfo:nil
repeats:YES];
答案 1 :(得分:0)
应用程序启动或您希望开始进度时,请存储当前时间:
let startTime = NSDate()
然后刷新(可以通过计时器设置每隔几分钟触发一次,或者在viewDidAppear()中):
let timeDelta = Date().timeIntervalSince(startTime)
progressBar.progress = timeDelta/(60 * 5) * 0.1
<强>更新强> 听起来像OP需要知道如何在应用程序终止和新发布之间保持进度开始时间。与其他答案一样,您可以使用UserDefaults并检查是否已经存在开始时间。如果它存在则使用它,否则创建一个新条目:
let userDefaultKey = "startTime"
var startTime = UserDefaults.standard.object(forKey: userDefaultKey)
if (startTime == nil)
{
startTime = Date()
UserDefaults.standard.set(startTime, forKey: userDefaultKey)
}