ios – Swift 2:仅在全屏视频上旋转屏幕

前端之家收集整理的这篇文章主要介绍了ios – Swift 2:仅在全屏视频上旋转屏幕前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一个很受欢迎的问题,但我找不到任何适用于 Swift 2的解决方案.

该应用程序仅限肖像.但是,在观看全屏视频(例如YouTube)时,用户应该可以旋转到横向.

在Objective C上,这是最简单的解决方案,我使用了很长时间:

  1. AppDelegate file:
  2.  
  3. static NSString * const VIDEO_CONTROLLER_CLASS_NAME_IOS7 = @"MPInlineVideoFullscreenViewController";
  4. static NSString * const VIDEO_CONTROLLER_CLASS_NAME_IOS8 = @"AVFullScreenViewController";
  5.  
  6. - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
  7.  
  8. if ([[window.rootViewController presentedViewController] isKindOfClass:NSClassFromString(VIDEO_CONTROLLER_CLASS_NAME_IOS7)] ||
  9. [[window.rootViewController presentedViewController] isKindOfClass:NSClassFromString(VIDEO_CONTROLLER_CLASS_NAME_IOS8)]) {
  10.  
  11. return UIInterfaceOrientationMaskAllButUpsideDown;
  12.  
  13. } else {
  14.  
  15. return UIInterfaceOrientationMaskPortrait;
  16.  
  17. }
  18.  
  19. }

当视频全屏显示时,这允许所有方向.否则,仅限肖像.

但是我很难在Swift上完成这项工作.当全屏视频是Swift上的播放器时,是否可以使屏幕旋转?

解决方法

这样的事情怎么样?
  1. func application(application: UIApplication,supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
  2.  
  3. var classestocheckFor = [AnyClass]()
  4.  
  5. if let ios7Class = NSClassFromString("MPInlineVideoFullscreenViewController") {
  6. classestocheckFor.append(ios7Class)
  7. }
  8.  
  9. if let ios8Class = NSClassFromString("AVFullScreenViewController") {
  10. classestocheckFor.append(ios8Class)
  11. }
  12.  
  13. for classtocheckFor in classestocheckFor {
  14. if (self.window?.rootViewController?.presentedViewController?.isKindOfClass(classtocheckFor) != nil) {
  15. return .AllButUpsideDown
  16. }
  17. }
  18.  
  19. return .Portrait
  20. }

NSClassFromString可能会返回nil,但isKindOfClass需要一个非可选的AnyClass.我正在检查是否可以在平台上加载每个类,添加加载到数组的类,然后遍历类数组,检查presentViewController是否属于任何类.如果是,我们返回.AllButUpsideDown.如果既没有加载类,也没有提供任何类,那么我们返回.Portrait.

猜你在找的iOS相关文章