使用此代码可让媒体播放器在全屏模式下以横向旋转(应用程序不支持):
// handle orientation for the device
func application (_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
guard let vc = (window?.rootViewController?.presentedViewController) else {
return .portrait
}
if (vc.isKind(of: NSClassFromString("AVFullScreenViewController")!)) || (vc.isKind(of: NSClassFromString("YTPlayerView")!)) {
return .allButUpsideDown
} else {
return .portrait
}
}
在 ios 10 中正常工作但由于 ios 11 ,屏幕在离开全屏后不会旋转回来,因此不会调整用户界面的大小(旋转后的应用只会占用一半)屏幕)。 似乎avkit上有一些修改,但我找不到任何资源,想法?
答案 0 :(得分:0)
IOS 11似乎支持开箱即用,这意味着如果用户运行ios 11,必须删除代码,全屏将自动将视频放在应有的位置,父屏幕不会旋转视频。
答案 1 :(得分:0)
今天我遇到了同样的问题。解决方案是检查iOS11是否正在运行。如果是这样,只需返回UIInterfaceOrientationMask.portrait
,否则返回所需的值。在iOS 11中,即使在项目设置中仅启用了肖像,视频也可以旋转。
示例:
if #available(iOS 11, *) {
return UIInterfaceOrientationMask.portrait
} else {
guard let vc = (window?.rootViewController?.presentedViewController) else {
return .portrait
}
if (vc.isKind(of: NSClassFromString("AVFullScreenViewController")!)) || (vc.isKind(of: NSClassFromString("YTPlayerView")!)) {
return .allButUpsideDown
} else {
return .portrait
}
}