美文网首页
iOS实现

iOS实现

作者: Ocean_e553 | 来源:发表于2020-12-08 16:30 被阅读0次

项目中有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];
    }
}

相关文章

网友评论

      本文标题:iOS实现

      本文链接:https://www.haomeiwen.com/subject/dycqgktx.html