2017-07-11 76 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'来解决这个问题。 –