Master/Detail Storyboard项目中的 IOS 导航栏在 ipad 上是透明的,但在 iphone 上不是

标签 ios swift navigation transparent splitview

我正在开发一个以默认的 Master/Detail 应用程序 Storyboard启动的 IOS 应用程序。除了从 Detail View Controller 添加一个额外的 segue 到一个新的 UIViewcontroller 之外,我没有更改原始布局'代表我自己的类(class)。我希望导航栏在我添加的 View Controller 上是透明的,并且我在互联网上找到了很多关于如何实现这一点的示例。我遇到的问题是,在 ipad 上进行测试时,导航栏如预期的那样是透明的,但在 Iphone 上,无论我做什么,导航栏都保持不变。

我正在运行 Xcode 7 beta,所有内容均使用 Swift 编码。

在我的 View Controller 的 viewDidLoad 函数中,我有以下代码行:

self.navigationController!.navigationBar.translucent = true;
self.navigationController!.navigationBar.shadowImage = UIImage()
self.navigationController!.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
self.navigationController.navigationBar.backgroundColor = UIColor.ClearColor()

我已经以多种不同的方式尝试了这些线路......这是我尝试过的一些事情

  1. 改为在 viewWillAppear 中运行这些行。
  2. 对从 UINavigationBar.appearance() 返回的对象运行相同的基本代码
  3. 获取父 View Controller 并在其导航栏对象上运行相同的设置。

这些变化都没有对行为产生任何影响。似乎主视图 Controller 首先全屏显示的任何 IOS 设备都使导航栏保持正常。而显示详细信息 View 或两个 View 的任何设备首先显示导航栏透明。我在想我需要在这些场景中以不同的方式访问导航栏..但我没有想法。

谢谢!

最佳答案

let navigationController = splitViewController!.viewControllers[splitViewController!.viewControllers.count-1] as! UINavigationController

在您的代码之上,然后将 self.navigationController! 更改为 navigationController,它将起作用。

关于Master/Detail Storyboard项目中的 IOS 导航栏在 ipad 上是透明的,但在 iphone 上不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747405/

相关文章:

swift - 每次访问计算属性时都会对其进行评估吗?

java - fragment 或 Activity 中的抽屉导航?

ios - 我的按钮和 textview 没有显示在 iOS 的屏幕上?

swift - 如何在类层次结构中应用 Swift 泛型/协议(protocol)?

iPhone- Twitter API GET Users Followers/Following 用户

ios - SceneKit 子节点位置在父节点旋转期间未更改

javascript - 添加附加链接到响应式导航

android - 如何在点击 FAB 时启动新的导航图?

ios - Apollo iOS swift 总是从本地缓存中获取 GraphQl

objective-c - 子类化 NSDictionary 不起作用