目标C:如何设置uiprogressview的时间和进度动态?(Objective c : How

2019-11-01 03:00发布

说我有一个尺寸(394,129,328,9)一UIProgressBar和我一起增加的高度

CGAffineTransform transform = CGAffineTransformMakeScale(1.0f, 3.0f);
PgView.transform = transform;

我需要实现的是:如果我有5分钟计时,在progressView应填充一定量的,完全充满在5分钟结束。 同1分钟至30分钟了。

我采取这样的:

-(void)viewWillAppear:(BOOL)animated
{
    CGAffineTransform transform = CGAffineTransformMakeScale(1.0f, 3.0f);
    PgView.transform = transform;

    recievedData = 0.01;
    xpectedTotalSize = 1.0;
    PgView.progress = 0.0;
    [self performSelectorOnMainThread:@selector(makeMyProgressBarMoving) withObject:nil waitUntilDone:NO];
}

- (void)makeMyProgressBarMoving
{
    float actual = [PgView progress];
    if (actual < 1)
    {
        PgView.progress = actual + ((float)recievedData/(float)xpectedTotalSize);
        [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(makeMyProgressBarMoving) userInfo:nil repeats:NO];
    }
    else{

    }
}

和它的作品。 但我想动态执行进度和时间间隔? 任何想法??

提前致谢。

Answer 1:

这是很难理解你的意图。 正如我想象,你只想更新如果新值可用来代替具有固定定时器间隔更新进度条。

这将导致答案很简单:只要你把“recievedData”的值更新进度条。 因此,该方法“makeMyProgressBarMoving”并不需要一个计时器。 此外,你不需要记住“实际”价值。 您可以直接分配“receivedData / xpectedTotalSize”进度条。

- (void) updateProgressBar
{
    PgView.progress =  ((float)receivedData/(float)xpectedTotalSize);
}

- (void) updateReceivedData
{
    if (receivedData < 20)
        receivedData += 1.0;
    else
        receivedData += 10.0;

    [self updateProgressBar];
}

-(void)viewWillAppear:(BOOL)animated
{
    receivedData = 0.0;
    xpectedTotalSize = 100.0;

    [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(updateReceivedData) userInfo:nil repeats:YES];
}

现在,计时器仍用于示范称之为“updateReceivedData”这只是增加“receivedData”,并呼吁“updateProgressBar”。 正如你看到的,“updateReceivedData”不只是为了演示线性递增,再次。 如果“updateReceivedData”将需求通过定时器来代替所谓的也随后在进度条会根据需要进行更新。 现在,它只是你想如何以及何时更新receivedData的问题。 这不是关于进度条的问题。



文章来源: Objective c : How to set time and progress of uiprogressview dynamically?