Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sanchessd

Timer de reprodução para player de uma radio

Recommended Posts

Boa tarde,

sou novo em desenvolvimento IOS, meu primeiro APP está sendo um player para o grupo de radios que eu trabalho,

estou tendo problemas com o Timer, (contador de tempo que a radio está em execução), segue o codigo:

 

- (void)updateProgress:(NSTimer *)updatedTimer
{

   if (streamer.bitRate != 0.0)
   {   int horas = 0;
           int minutos = 0;
           double progress = (streamer.progress);
           positionLabel.text =
           [NSString stringWithFormat:@"00:%.0f",
                progress];

           if (progress > 59)
           { 
                   minutos = (progress+1)/60;
                   if (((progress)-(minutos*60)) <=8) {
                           [positionLabel setText:[NSString stringWithFormat:@"%d:0%.0f",
                                                                           minutos, progress-((minutos*60)-1)]];
                   }
                   else{
                           [positionLabel setText:[NSString stringWithFormat:@"%d:%.0f",
                                                                           minutos, progress-((minutos*60)-2)]];
                   }
                   if (minutos > 59)
                   {
                           horas = progress /3600;
                           minutos = progress/60;
                           [positionLabel setText:
                                [NSString stringWithFormat:@"%d:%d:%.0f",
                                 horas,minutos-(horas*3600), progress-(minutos*60)]];
                   }
           }
           else
           {
                   [progressSlider setEnabled:NO];
           }
   }
   else
   {
           positionLabel.text = @"00:0";
   }



}

 

 

A contagem entra em segundos, tenho que exibir no formato hh/mm/ss.

 

o problema é que a apartir do 1 min ele conta até 1:61 só depois troca o minuto para 2:00 e continua a contagem normalmente, mas segue contando até 61 segundos, e não até 59 segundos, a lógica do meu codigo está errada, mas não consegui achar o problema, estou começando agora com programação.

 

Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvi meu problema, usei uma formatação de string onde

[NSString stringWithFormat:@"%i:%02i:%02i",horas, minutos-60, segundos];

o %02i significa que serao 2 digitos disponiveis para mostrar o conteudo da variavel, caso o numero for menor que 2 digitos ele representa com o zero na frente.

 

 

 

 

Função completa ficou assim:

 

- (void)updateProgress:(NSTimer *)updatedTimer
{
if (streamer.bitRate != 0.0)
{ 
     int horas = streamer.progress /3600;
     int minutos = (streamer.progress/60);
     int segundos = streamer.progress;
     segundos %= 60;
	positionLabel.text =
       [NSString stringWithFormat:@"%02i:%02i", minutos, segundos];

       if (horas >= 1) {
           positionLabel.text =
           [NSString stringWithFormat:@"%i:%02i:%02i",horas, minutos-60, segundos];
       }
   }
else{
	positionLabel.text = @"00:00";
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.