主/详细故事板项目中的 IOS 导航栏在 ipad 上是透明的,但在 iphone 上不透明

Posted

技术标签:

【中文标题】主/详细故事板项目中的 IOS 导航栏在 ipad 上是透明的,但在 iphone 上不透明【英文标题】:IOS Navigation Bar in Master/Detail storyboard project is transparent on ipad but not on iphone 【发布时间】:2015-10-23 04:56:13 【问题描述】:

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

我正在运行 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()

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

    改为在 viewWillAppear 中运行这些行。 对 UINavigationBar.appearance() 返回的对象运行相同的基本代码 获取父视图控制器并在其导航栏对象上运行相同的设置。

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

谢谢!

【问题讨论】:

你有没有想过这个问题?我也遇到了同样的问题 【参考方案1】:

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

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

【讨论】:

以上是关于主/详细故事板项目中的 IOS 导航栏在 ipad 上是透明的,但在 iphone 上不透明的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 导航栏在 Storyboard 上的第二个 ViewController 中无法访问

导航栏从我的故事板项目中消失了

未选择 iOS iPad 故事板

iOS 11 中的 SafeArea:如何在没有安全区域的情况下使用自定义导航栏在主屏幕上添加来自 Objective-c 代码的视图

将 iPad 故事板添加到现有的 iphone 项目

iOS 7 中的故事板导航问题