简单的5秒进度条视图?

时间:2014-03-22 04:06:26

标签: ios objective-c progress-bar uiprogressview

我是编码新手,我目前正在制作指南/参考应用(我的第一个应用)。

我一直在使用界面构建器来完成大部分工作。我知道我需要尽快使用代码,但现在我喜欢用IB学习。

这是我的问题:我的视图中有很多高清图片,加载需要4-5秒才能顺利滚动页面。我想添加一个进度视图栏(在UITableView和导航栏之间),显示5秒进度,以便让用户知道它仍在加载(我知道活动指示器但是进度视图栏看起来更好,似乎更容易使用)。

有人可以指导我完成所有步骤,以使进度视图栏充当5秒计时器吗?

2 个答案:

答案 0 :(得分: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;
    }
}

谢谢!

答案 1 :(得分:0)

这应该让你开始:

@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;
}