iOS应用程序只能支持一个tabBar项目的横向方向吗?

Posted

技术标签:

【中文标题】iOS应用程序只能支持一个tabBar项目的横向方向吗?【英文标题】:iOS app can support landscape orientation for only one tabBar item? 【发布时间】:2015-07-15 17:20:41 【问题描述】:

我正在使用 swift 制作 ios 应用程序。我的应用程序有很多视图,所有视图都将 UITabBar 作为根视图。我只需要为一个标签栏项目支持横向。

tabBar 1 - 仅纵向 tabBar 2 - 仅纵向 tabBar 3 - 仅纵向 tabBar 4 - 横向和纵​​向

我该怎么做?

【问题讨论】:

在这里回答:***.com/a/25925127/5066675 这可能更容易实现。这似乎是一个类似的问题。 ***.com/questions/25651969/… 好的,我将管理每个视图的方向但我有一个问题。当我的应用程序在 tabBar 4 中处于当前横向模式时。当我移动到另一个 tabBar 时,我的应用程序不会回到纵向模式。我应该检查每个视图并强制旋转,对吗? ps.对不起我的英语不好 【参考方案1】:

我有一个基于此答案的可行解决方案:https://***.com/a/24928474/1359306

    首先,确保在Target Settings > General > Deployment Info 中检查了支持的方向。

    将此代码(取自链接答案)添加到您的应用委托:

    internal var shouldRotate = false
    func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask 
      if shouldRotate 
        return .AllButUpsideDown
       else 
        return .Portrait
      
    
    

    然后在您的仅横向视图控制器中,将以下代码放入 viewDidAppear(不是 viewDidLoad!)以启用纵向和横向视图:

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    appDelegate.shouldRotate = true
    

    viewWillDisappear相反,再次禁用横向。

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    appDelegate.shouldRotate = false
    

    当应用处于横向状态时,我还会隐藏我的选项卡和状态栏,这感觉比点击选项卡并自动旋转屏幕要好得多。


在我的情况下,有几件事我不必担心。

从横向视图显示模态视图会导致问题

【讨论】:

没有评论的投票:/如果这个答案是错误的或者可以改进,那么评论。我在产品中有这个代码。

以上是关于iOS应用程序只能支持一个tabBar项目的横向方向吗?的主要内容,如果未能解决你的问题,请参考以下文章

ipad ios 5.1 中的界面方向问题

横向 IOS 应用程序在呈现模态视图控制器时抛出异常

横向模式下的 TabBar 问题

Iphone:无法从我的横向视图切换回纵向视图

UIWebView、SearchBar 和 TabBar 在横向重新加载视图后无法正确调整大小?

iOS 8 - UIWindow 方向总是纵向的