2016-08-21 11 views
2

私は、ファイルを1%から100%にダウンロードする進行状況を示すコードを使用します。ラベルにパーセントを表示

if(downloadTask == _downloadTask26){ 


     _progress26 = [[NSNumber numberWithInteger:totalBytesWritten] floatValue]; 
     _total26 = [[NSNumber numberWithInteger:totalBytesExpectedToWrite] floatValue]; 

    } 

    if(downloadTask == _downloadTask27){ 


     _progress27 = [[NSNumber numberWithInteger:totalBytesWritten] floatValue]; 
     _total27 = [[NSNumber numberWithInteger:totalBytesExpectedToWrite] floatValue]; 

    } 

     float progress = _progress26 + _progress27; 
     float total = _total26 + _total27; 

     NSString *percentage = [NSString stringWithFormat:@"%.f%%", ((progress/total) * 100)]; 
     (NSLog (percentage, @"%.f%%")); 
     if (!_label3) { 

       _label3 = [[UILabel alloc] initWithFrame:CGRectMake(200.43, 158.84, 42, 19)]; 

       _label3.numberOfLines = 1; 
       _label3.baselineAdjustment = UIBaselineAdjustmentAlignBaselines; 
       _label3.adjustsFontSizeToFitWidth = YES; 
       _label3.minimumScaleFactor = 10.0f/12.0f; 
       _label3.clipsToBounds = YES; 
       _label3.backgroundColor = [UIColor clearColor]; 
       _label3.textColor = [UIColor whiteColor]; 
       _label3.textAlignment = NSTextAlignmentCenter; 

       [_scroller addSubview:_label3]; 
      } 
     } 

     _label3.text = percentage; 
     if ([_label3.text isEqual: @"100%"]) { 
     } 

ただし、ファイルのダウンロード時に、パーセントが昇順で表示されません。パーセントは、下のビデオのように異なる順序で表示されます。どうすれば修正できますか?

ビデオ https://drive.google.com/file/d/0B0EJbcHq3ZALUVRzanJ6SndscWc/view

答えて

0

それが、この二つの条件内部downloadingTask26または27のプット・ログで、ダウンロードして合計サイズをチェックチェックしたタスクの状態をダウンロードによるものだ可能性があります。タスク全体が変更される可能性があります。

0

あなたの質問でコードを簡略化しましたか?ここで、ビデオを生成するコードのダウンロード数は26,27だけ増えましたか? 2回のダウンロードで、1回だけドロップダウンすると思っていますが、ダウンロード数が多い場合は、新しいダウンロードが始まるたびにドロップダウンすると思います。

ボトムラインの場合、実際にダウンロードが多い場合は、実際に開始されるまで、ダウンロードが開始されるまで、ダウンロードの合計バイト数がない可能性が高いため、結果は理にかなっていますダウンロードした総バイト数の合計が増えます(したがって、パーセンテージは低下します)。

解決策の1つは、NSProgressを使用することです。各ダウンロードの前に子供NSProgressを作成して、親の進捗率を更新します。そうすれば、まだ開始していないダウンロードは、合計パーセンテージに反映されます。

+0

はい私は非常に大きいので、コードを簡略化しました。自分のコードにNSProgressを正しく追加する方法を教えてください。 – wefagaefesfsefsef

+0

優れたWWDC 2015ビデオ[進捗報告のベストプラクティス](https://developer.apple.com/videos/play/wwdc2015/232/)を参照してください。 – Rob

関連する問題