Objota O mundo orientado a objetos

WBProgressView – Barra de progresso personalizada para iPhone / iPad

Posted on janeiro 31, 2011

Posted by Pedro

Contribuindo ai para o conhecimento de vocês leitores do objota, quero apresentar para vocês a WBProgressView. Esse componente foi criado por mim para facilitar na criação de barras personalizadas de load na aplicação. Nesse POST eu vou mostrar como usar esse componente e como personalizar caso necessário.

Os arquivos que compõem esse componente são:
WBProgressView.h
WBProgressView.m
ativo-bar.png
inativo-bar.png

Para usar o componente é preciso basicamente importar a classe, informar a imagem do estado ativo e a imagem do estado inativo.
Então vamos ao exemplo:

Primeiramente crie um projeto com o nome de ProgressBar. Logo depois declare a variável dentro do .h( ProgressBarViewController.h) do nosso viewController principal:


#import <UIKit/UIKit.h>
#import "WBProgressView.h"

@interface ProgressBarViewController : UIViewController {
	WBProgressView *progress;
}

@end

Agora no arquivo .m (ProgressBarViewController.m) deixe exatamente como embaixo. Nós vamos fazer com que a barra seja atualizada a cada 1 segundo, adicionando mais 1 a cada passagem.

//Não esqueça de colocar as imagens do componente dentro do seu projeto.

#import "ProgressBarViewController.h"

@implementation ProgressBarViewController

- (void)viewDidLoad {

        [super viewDidLoad];

        progress = [[WBProgressView alloc] initWithFrame:CGRectMake(10, 10, 400, 14)];
	progress.tileActive = [UIImage imageNamed:@"ativo-bar.png"];
	progress.tileInactive = [UIImage imageNamed:@"inativo-bar.png"];
	progress.max = 20.0;
	progress.min = 5.0;
	progress.value = 5.0;

	[self.view addSubview:progress];

	[progress release];

	[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(addValue) userInfo:nil repeats:NO];

}

- (void)addValue {

	if(progress.value != 20.0){

		progress.value += 0.5;
		[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(addValue) userInfo:nil repeats:NO];

	}

}

- (void)dealloc {
    [super dealloc];
    [progress release];
}

@end

Na classe NSTimer falamos para executar um determinado método a cada 1 segundo. Na propriedade max da classe WBProgressView serve para setar qual o valor máximo que o progress irá receber e em min o valor mínimo.

Caso queira personalizar a imagem do load, é só você trocar essas imagens de ativo e inativo por uma imagem que você quer :)...

Agora é só executar o programa e ver o resultado.

Pronto!!! É apenas isso. Simples não?
Qualquer dúvida ou sugestão postem por favor.

Até a próxima.

arquivos do post