我使用此代码开始播放视频(不是全屏)。人们可以按'全屏' 按钮切换到全屏。然而,在 iOS 11 测试版中,视频在全屏模式下变黑,我无法反转它或让它再次播放。
是否有一个简单的修复程序来更新我的 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];
}
最佳答案
@Oliver 胡 嗨,奥利弗,Apple 给了我一个很好的答复。它不是错误,而是代码中缺少的一行。还有前面提到的调用Allen应该加入viewdidload!这是 Apple 的回答:
如果你需要在 view controller 被 dismissed 但没有被释放时拆解,你应该将调用包装在 -[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]
。
关于ios - 视频 iOS 11/xcode 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45036171/