ビューに uilabel と uislider があります。スライダーを使用してラベルの時間を設定したい.スライダーの範囲は00:00:00から03:00:00です。3時間を意味し、スライダーの間隔は0.5分です。また、表示方法も。アプリケーションが閉じられていてもタイマーを実行したい。
3 に答える
まず、アプリを閉じた後にタイマーを実行し続ける方法はありません。バックグラウンド アプリは、iPhone では許可されていません。タイマーでそれを偽造する方法があります (アプリの終了時にタイムスタンプを保存し、それを起動時の時間と照合します)、アプリが再起動する前にタイマーが切れた場合は処理しません上。
カウントダウンで UILabel を更新する場合は、おそらく NSTimer が機能します。クラスに NSTimer タイマー、int secondsLeft、および UILabel countdownLabel があると仮定すると、次のようになります。
タイマーを作成します。
timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
updateCountdown メソッド:
-(void) updateCountdown {
int hours, minutes, seconds;
secondsLeft--;
hours = secondsLeft / 3600;
minutes = (secondsLeft % 3600) / 60;
seconds = (secondsLeft %3600) % 60;
countDownlabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
}
私は自分のアプリの 1 つで似たようなことをしていますが、今は手元にコードがありません。
このコードは間違っています。
timer = [NSTimer scheduledTimerWithInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
そのはず。
timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
アプリケーションがバックグラウンドに入ったときにタイマーを実行し続けることができます。
@shawn craverがこれを行うことはできないと言ったように、アプリケーションが別のイベントapplicationDidEnterBackgroundであるバックグラウンド(「終了しない」)に入ると、これを行うことができます。これにより、マルチスレッドGCD(グランドセントラルディスパッチ)が必要になります。
このリンクを参照してください