2012-01-12 3 views

ответ

1

Это, вероятно, лучший подход. NSTimer должен вести себя довольно последовательно на этом интервале, он только начинает становиться ненадежным при вызове его каждые 1/10 секунды или быстрее.

Однако, немного объяснений в случае, если он не совсем себя так, как вы надеялись:

Это не будет совершенным, потому что NSTimer не имеет это событие галочки буквально каждый интервал. Скорее, NSTimer находится во власти цикла потока, который может не вызвать вызов метода @selector до тех пор, пока не истечет его интервал. Затем объедините это с вызовом обновлений экрана, которые также не являются блокирующими.

Точность будет в значительной степени зависеть от того, что еще вы делаете в своем запуске ... если в мозгу вашего устройства мало что происходит, тогда ваш слайдер должен двигаться так, как вы надеялись.

Редактировать: Вы также можете рассмотреть NSTimer с большим интервалом и использовать методы анимации UIViewWithDuration ..., чтобы сделать его гладким?

1
  aTimer = [NSTimer timerWithTimeInterval:(1.0) target:self selector:@selector(timerFired:) userInfo:nil repeats:YES]; 

      NSRunLoop *runner = [NSRunLoop currentRunLoop]; 
      [runner addTimer:aTimer forMode: NSDefaultRunLoopMode]; 

     - (void)timerFired:(NSTimer*)theTimer { 

        slider.maximumValue=totaltime; 

       if(slider.value ==totaltime) 
       { 
        [theTimer invalidate]; 
        //terminate the loop 
     } 
    else 
    { 
    slider.value=slider.value+1; 
    } 
    } 

//timer runs continuously run if condition is true 
+0

NSTimer не имеет метода 'isinValid'. – Rengers