私のアプリでは、にフィルターを適用しますimage
。UIProgressView
編集が完了するまで数秒かかるので追加したい。そのようなメソッドを追加し、UIProgressView
それが完了した割合を更新するにはどうすればよいですか? の多くの例を見てきましたUIProgressView
が、それらはHttp
ネットワーク データの要求と読み込みのためのものです。カスタムメソッドにそれを実装する方法は?
3 に答える
これには Operation Queue を使用する必要があると思います。
[NSThread detachNewThreadSelector:@selector(showProgressView:) toTarget:self withObject:nil];
これは私にとってはうまくいきました.あなたにもうまくいくことを願っています.幸せなコーディングをしてください.!!
デリゲート イベントと同様に、編集の完了度を制御できる場合は、ネットワーク コールなどと同じように進行状況を更新できます。そのようなイベントがない場合でも、発生した合計進行状況のデルタを取得できる内部メソッドがいくつかある可能性があります。
次に、このデルタを取り込むメソッドを作成し、それを既存の進行状況に追加できます。
- (void)updateProgress:(CGFloat)delta
{
[self.progressView setProgress:self.progressView.progress+delta];
self.progressLabel.text = [NSString stringWithFormat:@"Completed : %.0f",self.progressView.progress*100];
}
利用可能なデータを知らずにこれに答えるのは難しいですが、基本的には、画像フィルターが適用されるまで、一貫した定期的な時間間隔で呼び出されるメソッドが必要です。これを行うための秘訣は、フィルターの時間の見積もりを考え出し、その時間が完了するまで NSTimer を使用してメソッドを起動することです。ただし、フィルタリングする正確な時間を把握できれば、それが明らかに望ましいでしょう.
そこから、進行状況ビューの進行状況を合計時間にわたってその時間に設定する必要があります...
self.progressView.progress = (float) progress
ただし、進行状況ビューはパーセントであるため、2 つの値を保存して比較 (互いに除算) する必要があることに注意してください。1) 合計時間 2) 経過時間の合計。ただし、ユーザーの @interface で float の進行状況を設定することで、これを行うことができます。