関数がループをループするたびに遅延を実行できるようにしたい。以下に示すように、すでにループ設定があります。
for (float batteryPercentage = 1; batteryPercentage <= 0; batteryPercentage -= 0.01)
{
double timeUntilNextDegreeDrop = 9.0;
dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeUntilNextDegreeDrop * NSEC_PER_SEC));
dispatch_after (time, dispatch_get_main_queue(), ^(void)
{
[batteryLevel setProgress:batteryPercentage animated:YES];
float batteryLevelPercentage = batteryPercentage * 100;
batteryLevelLabel.text = [NSString stringWithFormat:@"Battery Level: %f%%", batteryLevelPercentage];
});
}
batteryPercentage
は、値が 0 になるまで 9 秒ごとに 0.01 ずつ 1 から 0 にデクリメントしようとしている変数です。プログラムの合計の長さは 900 秒 (15 分) である必要があります。9 秒ごとに、このコードを 9 秒ごとに実行して、UIProgressView
呼び出された の値を変更する必要がありますbatteryLevel
。次に、batteryPercentage
0.67 を掛けて 67 を取得するなど、100 を掛けてパーセンテージ全体を取得し、batteryLevelLabel
テキストを新しい値に置き換えます。これを実行しようとすると、batteryLevel
進行状況ビューがいっぱいにならず、テキストが変化しません。タイマーに問題があると思いますが、9 秒の遅延を入力するより効果的な方法は何でしょうか?