项目中有h5播放视频的功能(<video>标签),点击全屏播放时,不能自动横屏播放视频. 因为项目设置了禁止横屏, 所以视频不会自动横屏播放, 解决办法如下:
1.监听通知
// 全屏播放
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidHidden:) name:UIWindowDidBecomeHiddenNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowBecomeVisible:) name:UIWindowDidBecomeVisibleNotification object:nil];
2.进入横屏 & 退出横屏 处理
// 进入全屏播放, 设置设备方向为 UIInterfaceOrientationLandscapeRight
- (void)windowBecomeVisible:(NSNotification *)notify {
id obj = notify.object;
if (![obj isMemberOfClass:[UIWindow class]]) {
return;
}
if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
SEL selector = @selector(setOrientation:);
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
[invocation setSelector:selector];
[invocation setTarget:[UIDevice currentDevice]];
int val = UIInterfaceOrientationLandscapeRight;
[invocation setArgument:&val atIndex:2];
[invocation invoke];
}
}
// 退出全屏播放, 设置设备方向为: UIInterfaceOrientationPortrait
- (void)windowDidHidden:(NSNotification *)notify {
id obj = notify.object;
if (![obj isMemberOfClass:[UIWindow class]]) {
return;
}
if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {
SEL selector = @selector(setOrientation:);
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
[invocation setSelector:selector];
[invocation setTarget:[UIDevice currentDevice]];
int val = UIInterfaceOrientationPortrait;
[invocation setArgument:&val atIndex:2];
[invocation invoke];
}
}
网友评论