2010-02-24 15 views

cevap

16

için bu sitedeki ve google yoğun aradık ben bunu anladım ve çok kötü değildi.

Sadece

playbackTimer=[NSTimer scheduledTimerWithTimeInterval:0.5 
            target:self 
               selector:@selector(myMethod:) 
            userInfo:nil 
            repeats:YES]; 

} 


-(void)myMethod:(NSTimer*)timer { 

    float total=audioPlayer.duration; 
    float f=audioPlayer.currentTime/total; 

    NSString *str = [NSString stringWithFormat:@"%f", f]; 

    playbackProgress.progress=f; 

    NSLog(str); 
} 
0

periyodik zaman gözlemci ekle Bir zamanlayıcı güncellemek ve kaydırıcı güncelleme - Swift içinde böyle olacak -

func addPlayBackSlider() 
    { 
    playbackSlider = UISlider(frame:CGRect(x:10, y:300, width:300, height:20)) 
    playbackSlider?.minimumValue = 0 
    let duration : CMTime = playerItem.asset.duration 
    let seconds : Float64 = CMTimeGetSeconds(duration) 
    playbackSlider?.maximumValue = Float(seconds) 
    playbackSlider?.isContinuous = true 

    //If you want to manually set progressBar 
    playbackSlider?.addTarget(self, action: #selector(AddAudioController.playbackSliderValueChanged(_:)), for: .valueChanged) 

    //Here is the Observer 
    player!.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, 1), queue: DispatchQueue.main) { (CMTime) -> Void in 
     if self.player!.currentItem?.status == .readyToPlay { 
      let time : Float64 = CMTimeGetSeconds(self.player!.currentTime()); 
      self.playbackSlider!.value = Float (time); 
     } 
    } 
    } 

    //If you want to manually set progressBar 
    func playbackSliderValueChanged(_ playbackSlider:UISlider) 
    { 
    let seconds : Int64 = Int64(playbackSlider.value) 
    targetTime = CMTimeMake(seconds, 1) 
    print(targetTime) 

    player!.seek(to: targetTime) 

    if player!.rate == 0 
    { 
     player?.play() 
     playButton!.setTitle("Pause", for: UIControlState.normal) 
    } 
} 
+0

Umut bu yardımcı olur :) – Shawon91

+0

bir ekleme periyodik zaman gözlemcisi maalesef AVAudioPlayer için değil, AVPlayer için çalışıyor. –