显示标签

时间:2016-08-21 06:01:48

标签: ios objective-c label

我使用代码显示从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

2 个答案:

答案 0 :(得分:0)

可能是由于下载任务条件检查它正在下载任务26或27将日志放入这两个条件并检查下载和总大小。总任务可能是变化。

答案 1 :(得分:0)

您是否简化了问题中的代码,生成视频的代码有多少只包含下载的26和27?只有两次下载,我希望它只下载一次,但是如果你有很多下载,我希望每次下载开始都会下载。

最重要的是,如果你真的有很多下载,结果很有意义,因为很可能你没有为许多下载的总字节值,直到它们实际开始和后来的下载开始,突然间下载的总字节数总和将增加(因此百分比将下降)。

一种解决方案是使用NSProgress,为每次下载创建一个子NSProgress,然后更新父进度的百分比。这样,尚未开始的下载将反映在总百分比中。