【问题标题】:how to make only a subview landscape?如何只制作子视图景观?
【发布时间】:2017-09-16 11:52:10
【问题描述】:

我知道有一个类似的问题Only ONE VIEW landscape mode,在问这个问题之前我已经仔细阅读了。

我的应用中有一个名为 webview 的 WKWebview,并且该 webview 有一个名为 player 的子视图。我用 webview 加载网页,用 player 播放视频。

默认情况下,播放器被压缩在 webview 的右下角,当我单击播放器的展开按钮时,我想将播放器展开为横向。

由于 webview 和播放器是在 WebViewController.swift 中定义的,也就是说在同一个控制器中。我怎样才能让播放器子视图变成横向?

【问题讨论】:

标签: xcode uiview uiviewcontroller swift3 subview


【解决方案1】:

您可以尝试多个UIWindow。每个UIWindow 都可以有自己的根视图控制器。因此,可以有一个旋转的窗口,而另一个不旋转的窗口。我自己也使用过这种方法,它对我很有效。使您的“子视图”独立UIWindow 可能非常困难,但我认为值得一试。希望这些信息对您有所帮助。

【讨论】:

    【解决方案2】:

    在我看来,不能只为应用程序中的子视图固定一个方向。视图控制器只能有一个方向(横向/纵向)

    您可以将虚拟视频控制器放在屏幕的右下角,在其上方,您可以放置​​按钮或其他东西(可点击的对象)。当您单击按钮或可点击对象时,您可以呈现一个新的视图控制器,您可以在其中仅以横向模式播放视频。

    视频播放完毕后,您可以关闭视图控制器。

    【讨论】:

      【解决方案3】:

      当您的应用程序收到如下方向更改调用时,您可以检查课程。

      #pragma mark - Orientations Methods
      - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
      {
          if ([[self.window.rootViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]])
          {
              return UIInterfaceOrientationMaskAllButUpsideDown;
          }
          else
          {
              if ([[self.window.rootViewController presentedViewController] isKindOfClass:[UINavigationController class]])
              {
                  // look for it inside UINavigationController
                  UINavigationController *nc = (UINavigationController *)[self.window.rootViewController presentedViewController];
      
                  // is at the top?
                  if ([nc.topViewController isKindOfClass:[MPMoviePlayerViewController class]])
                  {
                      return UIInterfaceOrientationMaskAllButUpsideDown;
      
                      // or it's presented from the top?
                  }
                  else if ([[nc.topViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]])
                  {
                      return UIInterfaceOrientationMaskAllButUpsideDown;
                  }
              }
          }
      
          return UIInterfaceOrientationMaskPortrait;         
      }
      

      这个方法将检查你的类是否是电影播放器​​,那么它是否允许旋转你的视图。当用户在电影播放器​​中按下完成按钮时,您需要处理

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-27
        • 1970-01-01
        • 2018-12-22
        • 2023-04-03
        • 2015-07-02
        • 1970-01-01
        相关资源
        最近更新 更多