Простой 5-секундный индикатор выполнения?

Я новичок в кодировании, и в настоящее время я делаю руководство / справочное приложение (мое первое приложение).

Я использовал конструктор интерфейсов, чтобы сделать большую часть работы. Я знаю, что скоро мне нужно будет использовать код, но сейчас мне нравится учиться с IB.

Вот мой вопрос: у меня есть представление, в котором много HD-изображений, загрузка занимает 4-5 секунд, пока я не смогу плавно прокручивать страницу. Я хочу добавить индикатор прогресса (между UITableView и панелью навигации), который показывает 5-секундный прогресс, чтобы пользователь знал, что он все еще загружается (я знаю об индикаторе активности, но индикатор прогресса выглядит лучше и кажется проще в использовании).

Может ли кто-нибудь провести меня через все шаги, чтобы индикатор прогресса работал как 5-секундный таймер?


person 17yrsDev    schedule 22.03.2014    source источник
comment
Я просто предлагаю вам использовать UIActivityIndicator вместо него.   -  person Kumar KL    schedule 22.03.2014


Ответы (2)


Давайте реализуем таким образом на 5 минут progressView,

В файле .h

NSTimer * timer;

UIProgressView * progView;

float duration;

В файле .m

- (void)viewDidLoad
{
    [super viewDidLoad];

    progView = [[UIProgressView alloc] initWithFrame:CGRectMake(10.0, 0.0, 300.0, 10.0)];

    [self.view addSubview:progView];

    timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateProgress) userInfo:nil repeats:YES];;
}

-(void)updateProgress
{
    duration += 0.1;

    progView.progress = (duration/5.0); // here 5.0 indicates your required time duration

    if (progView.progress == 1)
    {
        [timer invalidate];

        timer = nil;
    }
}

Спасибо!

person Natarajan    schedule 22.03.2014

Это должно помочь вам начать:

@property (nonatomic, strong) NSTimer *progressTimer;
@property (nonatomic, assign) CGFloat progress;
@property (nonatomic, strong) UIProgressView *progressView;

- (void)yourMethod
{
    if (!self.progressView)
    {
         self.progressView = [[UIProgressView alloc]initWithFrame:CGRectMake(0, 64, 320, 2)];
         self.progressView.progressTintColor = [UIColor greenColor];

         [self.navigationController.navigationBar.superview insertSubview:self.progressView belowSubview:self.navigationController.navigationBar];
    }
    else
    {
         self.progressView.hidden = NO;
    }

    self.progressTimer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(updateProgressView) userInfo:nil repeats:YES];

    NSTimer *stopProgressTimer = [NSTimer timerWithTimeInterval:5.0 target:self selector:@selector(stopProgressView) userInfo:nil repeats:NO];

    [stopProgressTimer fire];
}

- (void)stopProgressView
{
    [self.progressTimer invalidate];
    self.progress = 0.0f;
    self.progressView.hidden = YES;
    self.progressView.progress = 0.0f;
}

- (void)updateProgressView
{
    self.progress = (self.progress + 0.1f) / 5;
    self.progressView.progress = self.progress;
}
person klcjr89    schedule 22.03.2014