Ответ 1
Я действительно не понимаю ваш код, вам не нужны отдельные методы для перемещения вперед и назад, вы можете использовать один и тот же для обоих. У меня есть рабочий проигрыватель AVPlayer Movie Player, я покажу вам, как я сделал часть слайдера.
-(IBAction)sliding:(id)sender{
CMTime newTime = CMTimeMakeWithSeconds(seeker.value, 1);
[self.player seekToTime:newTime];
}
-(void)setSlider{
sliderTimer = [[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES]retain];
self.seeker.maximumValue = [self durationInSeconds];
[seeker addTarget:self action:@selector(sliding:) forControlEvents:UIControlEventValueChanged];
seeker.minimumValue = 0.0;
seeker.continuous = YES;
}
- (void)updateSlider {
self.seeker.maximumValue = [self durationInSeconds];
self.seeker.value = [self currentTimeInSeconds];
}
- (Float64)durationInSeconds {
Float64 dur = CMTimeGetSeconds(duration);
return dur;
}
- (Float64)currentTimeInSeconds {
Float64 dur = CMTimeGetSeconds([self.player currentTime]);
return dur;
}
И что это, есть два gotchas в этом коде, во-первых, свойство duration возвращает переменную CMTime, вы должны преобразовать ее в float, также это возвращает необработанное количество секунд, вы должны преобразовать ее в h: mm: ss, если вы хотите отображать метки времени. Во-вторых, метод updateSlider запускается таймером каждую секунду. Удачи.