UITabbarController中的UISplitViewController:主控制器不在UITabbar下

时间:2015-09-19 18:58:01

标签: ios ipad uitabbarcontroller uisplitviewcontroller

我阅读了一些现有的问题并尝试设置“在不透明栏下”无济于事。 enter image description here

查看主视图下的导航栏和标签栏是如何变暗的?这是一个简单的Xcode7新项目,具有拆分视图。唯一添加的东西 - UITabbarController。

我错过了什么? enter image description here

更新 以下是压缩项目的链接:https://dl.dropboxusercontent.com/u/6402890/dds1.zip

2 个答案:

答案 0 :(得分:4)

这是一个非常奇怪的问题。使用您的项目进行测试,似乎只会影响iPad Air和iPad Air2和iPhone 6+,而不会影响iPad Retina或iPad 2.

问题与UINavigationBar barTintColor和UITabBar barTintColor的设置有关。

您可以通过执行以下操作来解决问题:

1)对于每个UINavigationController,将UINavigationBar barTintColor设置为白色或取消选择translucent开关。您可以在IB中执行此操作,方法是选择导航控制器,然后在视图层次结构中选择包含的导航栏。

这涉及顶部阴影。

2)对于UITabBarController,将UITabBar barTintColor设置为白色或取消选择translucent开关。您可以在IB中执行此操作,方法是选择选项卡栏控制器,然后在视图层次结构中选择包含的选项卡栏。

这涉及底部阴影。

当我将它们都设置为白色时,它可以工作。当我将两者都设置为半透明时,它就可以工作。设置所需的颜色似乎是最好的主意,而不是改变半透明设置。

至于为什么?使用3D查看器看起来有一个很长的导航栏样式UIView,它是64点高,灰色,沿着分割视图控制器的整个宽度运行。无论出于何种原因,在iPad Air和iPhone 6s上,这都是显示出来的。我想这与新设备中的硬件加速或其他一些设备特定功能有关。

<强>更新

再看看,阴影的原因是UISplitViewController的背景颜色。你似乎无法在IB中设置它,但默认情况下它看起来像是灰色,这是你看到的。

要解决此问题,您需要为UISplitViewController创建一个类并设置主视图背景颜色。类似的东西:

class MySplitViewController: UISplitViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Set the background color to white instead of default grey.
        self.view.backgroundColor=UIColor.whiteColor()
    }
}

所以这似乎是最简单的解决方案。

答案 1 :(得分:0)

确保主VC及其导航控制器选中“下顶栏”和“底栏下”,并且表格视图的上/下限制为supreview与页边距相关。还要确保主视图的背景不暗或清晰。