Ich habe einen AVPlayer, den ich in eine neue Ansicht lade, wenn auf einen Link geklickt wird.AVPlayer kann nicht entfernt oder gestoppt werden
-(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];
}
Der obige Code fügt den AVPlayer meiner App hinzu und funktioniert gut. Ich habe einen Schalter in meiner customControlOverlay-Feder, der die Ansicht entfernen und den AVplayer vom Spielen stoppen sollte.
-(IBAction)toggleQuality:(id)sender {
if (qualityToggle.selectedSegmentIndex == 0) {
NSLog(@"HD");
[playerLayer.player pause];
[self.view removeFromSuperview];
} else if (qualityToggle.selectedSegmentIndex == 1) {
NSLog(@"SD");
}
}
Die Ansicht wird korrekt entfernt, aber der Player spielt immer noch im Hintergrund. Nach dem Testen eines Bits reagiert der Player nicht auf irgendeinen Code in der toggleQuality-Methode, sondern auf Strings, die ich dort habe, da Überprüfungen protokolliert werden.
Irgendwelche Gedanken darüber, was ich falsch mache?
Verwenden playerLayer.player = nil; bevor Sie aus Superview entfernen –
Der Sound spielt weiter, auch wenn ich das tue. – AFraser
Was passiert, wenn Sie das in der anderen Reihenfolge tun (entfernen und dann auf Null setzen)? – Squatch