如何检测用户按下AVPlayerViewController的展开图标?
我想知道电影播放时是否进入全屏模式.
我想知道电影播放时是否进入全屏模式.
解决方法
也可以观察playerViewController.contentOverlayView的界限,并将其与[UIScreen mainScreen] .bounds进行比较,例如:
self.playerViewController = [AVPlayerViewController new];
// do this after adding player VC as a child VC or in completion block of -presentViewController:animated:completion:
[self.playerViewController.contentOverlayView addobserver:self forKeyPath:@"bounds" options:NSkeyvalueObservingOptionNew | NSkeyvalueObservingOptionOld context:NULL];
...
- (void)observeValueForKeyPath:(Nsstring *)keyPath ofObject:(id)object change:(NSDictionary<Nsstring *,id> *)change context:(void *)context {
if (object == self.playerViewController.contentOverlayView) {
if ([keyPath isEqualToString:@"bounds"]) {
CGRect oldBounds = [change[NSkeyvalueChangeOldKey] CGRectValue],newBounds = [change[NSkeyvalueChangeNewKey] CGRectValue];
BOOL wasFullscreen = CGRectEqualToRect(oldBounds,[UIScreen mainScreen].bounds),isFullscreen = CGRectEqualToRect(newBounds,[UIScreen mainScreen].bounds);
if (isFullscreen && !wasFullscreen) {
if (CGRectEqualToRect(oldBounds,CGRectMake(0,newBounds.size.height,newBounds.size.width))) {
NSLog(@"rotated fullscreen");
}
else {
NSLog(@"entered fullscreen");
}
}
else if (!isFullscreen && wasFullscreen) {
NSLog(@"exited fullscreen");
}
}
}
}