我使用代码显示从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 :(得分:0)
可能是由于下载任务条件检查它正在下载任务26或27将日志放入这两个条件并检查下载和总大小。总任务可能是变化。
答案 1 :(得分:0)
您是否简化了问题中的代码,生成视频的代码有多少只包含下载的26和27?只有两次下载,我希望它只下载一次,但是如果你有很多下载,我希望每次下载开始都会下载。
最重要的是,如果你真的有很多下载,结果很有意义,因为很可能你没有为许多下载的总字节值,直到它们实际开始和后来的下载开始,突然间下载的总字节数总和将增加(因此百分比将下降)。
一种解决方案是使用NSProgress
,为每次下载创建一个子NSProgress
,然后更新父进度的百分比。这样,尚未开始的下载将反映在总百分比中。