Mam odtwarzacz AVP, który jest ładowany do nowego widoku po kliknięciu łącza.Nie można usunąć ani zatrzymać programu AVPlayer
-(void)createAndConfigurePlayerWithURL:(NSURL *)movieURL sourceType:(MPMovieSourceType)sourceType {
self.playerItem = [AVPlayerItem playerItemWithURL:movieURL];
customControlOverlay = [[AFDetailViewController alloc] initWithNibName:@"AFMovieScrubControl" bundle:nil];
backgroundWindow = [[UIApplication sharedApplication] keyWindow];
[customControlOverlay.view setFrame:backgroundWindow.frame];
[backgroundWindow addSubview:customControlOverlay.view];
playerLayer = [AVPlayerLayer playerLayerWithPlayer:[AVPlayer playerWithPlayerItem:playerItem]];
[playerLayer.player play];
playerLayer.frame = customControlOverlay.view.frame;
[customControlOverlay.view.layer addSublayer:playerLayer];
}
Powyższy kod dodaje odtwarzacz AVP do mojej aplikacji i działa dobrze. Mam przełącznik w mojej końcówce customControlOverlay, który powinien usunąć widok i zatrzymać odtwarzanie AVplayera.
-(IBAction)toggleQuality:(id)sender {
if (qualityToggle.selectedSegmentIndex == 0) {
NSLog(@"HD");
[playerLayer.player pause];
[self.view removeFromSuperview];
} else if (qualityToggle.selectedSegmentIndex == 1) {
NSLog(@"SD");
}
}
Widok jest poprawnie usunięty, ale odtwarzacz nadal jest odtwarzany w tle. Po przetestowaniu bitów gracz nie zareaguje na żaden kod w metodzie toggleQuality, ale ciągi, które mam tam, gdy czeki są rejestrowane.
Jakieś myśli o tym, co robię źle?
Użyj playerLayer.player = nil; przed usunięciem z widoku –
Dźwięk będzie odtwarzany, nawet jeśli to zrobię. – AFraser
Co zrobić, jeśli robisz to w innej kolejności (usuń, a następnie ustaw na zero)? – Squatch