2010-02-24 10 views

उत्तर

16

लिए इस साइट पर और गूगल पर बड़े पैमाने पर खोज की है मैं यह पता लगा है और यह बहुत बुरा नहीं था।

बस एक टाइमर में अपडेट कर

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

एक आवधिक समय पर्यवेक्षक जोड़ें और स्लाइडर अद्यतन - स्विफ्ट में यह इस तरह होगा -

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

आशा इस मदद करता है :) – Shawon91

+0

एक जोड़ा जा रहा है आवधिक समय पर्यवेक्षक दुर्भाग्य से केवल AVPlayer के लिए काम करता है, AVAudioPlayer नहीं। –

संबंधित मुद्दे