2017-07-11 4 views
1

Ich benutze diesen Code, um ein Video (nicht Vollbild) zu starten. Die Benutzer können die Vollbild-Taste drücken, um auf den Vollbildmodus umzuschalten. In iOS 11 Beta wird das Video jedoch im Vollbildmodus schwarz und ich kann es nicht umkehren oder wieder abspielen.Video iOS 11/Xcode 9

Gibt es eine einfache Lösung, um meinen Code für iOS 11 zu aktualisieren? Oder weiß jemand, wo man ein Muster dafür findet. Ich habe gesucht, aber noch nichts gefunden. Vielen Dank, Meg

-(void)viewDidLoad { 

     [super viewDidLoad]; 

    // grab a local URL to our video 
    NSURL *videoURL = [[NSBundle mainBundle]URLForResource:@"pres 2" withExtension:@"m4v"]; 

    // create an AVPlayer 
    AVPlayer *player = [AVPlayer playerWithURL:videoURL]; 

    // create a player view controller 
    self.controller = [[AVPlayerViewController alloc]init]; 
    controller.player = player; 
    [player play]; 


    // show the view controller 
    [self addChildViewController:controller]; 
    [self.view addSubview:controller.view]; 
    controller.view.frame = CGRectMake(0,25, 750, 422); 

} 


-(void)playerItemDidReachEnd:(NSNotification *) notification{ 
    //remove the player 

} 


-(void) viewWillDisappear:(BOOL)animated{ 

    [super viewWillDisappear:animated]; 

    [controller.player replaceCurrentItemWithPlayerItem:nil]; 
} 

-(void) viewDidDisappear:(BOOL)animated{ 

    [super viewDidDisappear:animated]; 
    [controller.player replaceCurrentItemWithPlayerItem:nil]; 

} 
+0

Mein erster Instinkt ist, dass es entweder ein Fehler in iOS 11 ist oder es ist die Tatsache, dass Sie nicht die richtige Sache tun, um einen Kind-View-Controller hinzuzufügen, besonders wenn Sie Autolayout verwenden. Sie müssen 'didMoveToParentViewController:' aufrufen, nachdem Sie 'addChildViewController:' aufgerufen haben. Es ist in der [Docs] (https://developer.apple.com/documentation/uikit/uiviewcontroller/1621405-didmovetoparentviewcontroller?language=objc) –

+0

danke für Ihre schnelle Antwort. Ich schaue mir das an :-) – user1737746

+0

@ user1737746 hast du das herausgefunden? Ich sehe genau dasselbe in meinem Projekt. Es scheint wert, einen Fehler mit Apple zu melden :( –

Antwort

1

@Oliver Hu Hallo Oliver, bekam eine sehr freundliche Antwort von Apple. Es ist kein Fehler, sondern eine fehlende Zeile im Code. Auch der oben erwähnte Aufruf Allen sollte zum viewdidload hinzugefügt werden! Hier ist Apples Antwort:

wenn Sie Teardown müssen, wenn die View-Controller des Feldes verwiesen, aber nicht aufgehoben, sollten Sie die Anrufe in wickeln - [UIViewController isBeingDismissed], etwa so:

-(void) viewWillDisappear:(BOOL)animated{ 

    [super viewWillDisappear:animated]; 

    if ([self isBeingDismissed]) 
    { 
    [controller.player replaceCurrentItemWithPlayerItem:nil]; 
    } 
} 

-(void) viewDidDisappear:(BOOL)animated{ 

    [super viewDidDisappear:animated]; 
    if ([self isBeingDismissed]) 
    { 
    [controller.player replaceCurrentItemWithPlayerItem:nil]; 
    }  
} 

Auch sollten Sie anrufen [controller didMoveToParentViewController:self] beim Einbetten.

+0

Danke, dass Sie mich wissen lassen !! Ich denke, es ist eine Regression in Apples Code .. Ich habe das umgangen, indem ich den 'addChildViewController' in viewDidLoad gesetzt habe und' addSubview' in viewWillAppear aufgerufen habe. –