4

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

我正在运行 Xcode 7 测试版,一切都用 Swift 编码。

在我的视图控制器的 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. 获取父视图控制器并在其导航栏对象上运行相同的设置。

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

谢谢!

4

1 回答 1

-1

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

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

于 2016-03-31T11:05:09.030 回答