10

ビューに uilabel と uislider があります。スライダーを使用してラベルの時間を設定したい.スライダーの範囲は00:00:00から03:00:00です。3時間を意味し、スライダーの間隔は0.5分です。また、表示方法も。アプリケーションが閉じられていてもタイマーを実行したい。

4

3 に答える 3

41

まず、アプリを閉じた後にタイマーを実行し続ける方法はありません。バックグラウンド アプリは、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 つで似たようなことをしていますが、今は手元にコードがありません。

于 2009-10-06T15:10:13.863 に答える
2

このコードは間違っています。

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];
于 2010-11-27T19:16:49.963 に答える
0

アプリケーションがバックグラウンドに入ったときにタイマーを実行し続けることができます。

@shawn craverがこれを行うことはできないと言ったように、アプリケーションが別のイベントapplicationDidEnterBackgroundであるバックグラウンド(「終了しない」)に入ると、これを行うことができます。これにより、マルチスレッドGCD(グランドセントラルディスパッチ)が必要になります。

このリンクを参照してください

iOSでタイマーを設定する

于 2013-09-11T06:09:09.333 に答える