我正在使用 AFDownloadRequestOperation 通过AFNetworking Framework下载文件,每当我在下载时暂停文件,然后再恢复它时, setProgressiveDownloadProgressBlock 就会开始从零返回 totalBytesRead 的值,而部分下载了文件。因此,显示文件调用剩余百分比之后的块 setCompletionBlockWithSuccess
但是,我想在进度栏中显示适当的进度,那么我应该如何获得文件下载的适当百分比?
最佳答案
这就是我用的
[operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
NSLog(@"Operation%i: bytesRead : %d", i, bytesRead);
NSLog(@"Operation%i: totalBytesRead : %lld", i, totalBytesRead);
NSLog(@"Operation%i: totalBytesExpectedToRead: %lld", i, totalBytesExpectedToRead);
if (totalBytesExpectedToRead > 0)
{
self.progressView.progress = (float)totalBytesRead / totalBytesExpectedToRead;
}
}];
引入检查的原因是,有时总totalsBytesExpectedToRead可能变为-1,这会破坏progressview的进度平滑度[还请注意,由于NSUrlconnection的问题,hrader返回-1作为预期的读取大小]
(float)totalBytesRead / totalBytesExpectedToRead * 100
给出百分比