2017-07-11 107 views
1

我使用此代碼來啓動視頻(而不是全屏)。人們可以按'全屏'按鈕切換到全屏。但是,在iOS 11 beta版中,視頻全屏變黑,我無法將其翻轉或重新播放。視頻iOS 11/xcode 9

是否有一個簡單的修復更新我的代碼爲iOS 11?還是有人知道在哪裏找到這個樣本。我搜查了一下,但還沒有發現任何東西。 非常感謝,梅格

-(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

我的第一個直覺是它是iOS 11中的一個bug,或者是你沒有做正確的事情來添加子視圖控制器,特別是如果你使用自動佈局。調用addChildViewController:後,您需要調用'didMoveToParentViewController:'。它在[docs](https://developer.apple.com/documentation/uikit/uiviewcontroller/1621405-didmovetoparentviewcontroller?language=objc) –

+0

感謝您的快速響應。我會研究這個:-) – user1737746

+0

@ user1737746你有想過嗎?我在我的項目中看到完全一樣的東西。似乎值得報告一個與蘋果公司的錯誤:( –

回答

1

@Oliver胡 嗨奧利弗,得到了來自蘋果的一個很善良的答案。它不是一個錯誤,而是代碼中缺少的一行。此外,前面提到的Allen應該添加到viewdidload中!這裏是蘋果公司的回答是:

如果你需要在視圖控制器撤職,但不釋放到拆毀,你應該換行調用 - [UIViewController中isBeingDismissed],就像這樣:

-(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]; 
    }  
} 

你也應該調用嵌入它時嵌入[controller didMoveToParentViewController:self]

+0

謝謝你讓我知道!我認爲這是蘋果代碼中的迴歸。我通過在viewDidLoad中設置'addChildViewController'並在viewWillAppear中調用'addSubview'來解決這個問題。 –