iOS 5 が出てから、プログレス バーに少し問題があります。以下のコードは iOS 5 より前は問題なく動作していましたが、iOS 5 では進行状況バーにループ内で設定された新しい進行状況が表示されなくなりました。
コードは次のように動作すると予想されます。
- プログレスバーを作成する(作品)
- 新しいバックグラウンド プロセスの場合: 初期進行状況を 0.25 に設定します (動作します)。
- 同じバックグラウンド プロセスで: ループを通過しながら進行状況を更新します (iOS 4 で機能)
バー初期化のコードは次のとおりです。
// create a progress bar
UIProgressView *progressBar = [[UIProgressView alloc] initWithFrame:CGRectMake(coverSizeX*0.25, coverSizeY - 34.0, coverSizeX*0.5, 9.0)];
progressBar.progress = 0.0;
progressBar.progressViewStyle = UIProgressViewStyleBar;
別のスレッドでは、進行状況の開始点を 0.25 に設定します。
// set an initial progress
[progressBar setProgress: 0.25];
少し後に、ループ内の進行状況を更新して、ダウンロードの進行状況を表示します。
// within a for-loop:
NSNumber *counterPercentage;
for ( pageDownload = 1; pageDownload < pagesToDownload; pageDownload++ ) {
counterPercentage = [[NSNumber alloc] initWithFloat: (float)pageDownload / (float)((float)pagesToDownload)];
[progressBar setProgress: [counterPercentage floatValue]];
[progressBar performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntilDone:YES];
}
…しかし、進行状況は画面に表示されず、進行状況バーは設定された初期の 0.25 進行状況でスタックします。
iOS 5 のリリースで、それを壊す可能性のある変更はありましたか?