这是一个很受欢迎的问题,但我找不到任何适用于
Swift 2的解决方案.
该应用程序仅限肖像.但是,在观看全屏视频(例如YouTube)时,用户应该可以旋转到横向.
在Objective C上,这是最简单的解决方案,我使用了很长时间:
AppDelegate file: static NSString * const VIDEO_CONTROLLER_CLASS_NAME_IOS7 = @"MPInlineVideoFullscreenViewController"; static NSString * const VIDEO_CONTROLLER_CLASS_NAME_IOS8 = @"AVFullScreenViewController"; - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{ if ([[window.rootViewController presentedViewController] isKindOfClass:NSClassFromString(VIDEO_CONTROLLER_CLASS_NAME_IOS7)] || [[window.rootViewController presentedViewController] isKindOfClass:NSClassFromString(VIDEO_CONTROLLER_CLASS_NAME_IOS8)]) { return UIInterfaceOrientationMaskAllButUpsideDown; } else { return UIInterfaceOrientationMaskPortrait; } }
当视频全屏显示时,这允许所有方向.否则,仅限肖像.
但是我很难在Swift上完成这项工作.当全屏视频是Swift上的播放器时,是否可以使屏幕旋转?
解决方法
这样的事情怎么样?
func application(application: UIApplication,supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { var classesToCheckFor = [AnyClass]() if let ios7Class = NSClassFromString("MPInlineVideoFullscreenViewController") { classesToCheckFor.append(ios7Class) } if let ios8Class = NSClassFromString("AVFullScreenViewController") { classesToCheckFor.append(ios8Class) } for classToCheckFor in classesToCheckFor { if (self.window?.rootViewController?.presentedViewController?.isKindOfClass(classToCheckFor) != nil) { return .AllButUpsideDown } } return .Portrait }
NSClassFromString可能会返回nil,但isKindOfClass需要一个非可选的AnyClass.我正在检查是否可以在平台上加载每个类,添加加载到数组的类,然后遍历类数组,检查presentViewController是否属于任何类.如果是,我们返回.AllButUpsideDown.如果既没有加载类,也没有提供任何类,那么我们返回.Portrait.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。