2017-10-12 97 views
2

我已经看到了各种主题的SO这一点,但我不能让任何人在iOS的11和Xcode 9iOS版11导航栏清晰

我想建立一个完全清晰的导航栏工作,但对我而言,我无法摆脱“磨砂”的外观,也不能摆脱底部蚀刻。

This is what I'm getting

这是我的代码:

override func viewDidLoad() { 
    super.viewDidLoad() 
    navigationController?.navigationBar.isTranslucent = true 
    navigationController?.navigationBar.shadowImage = UIImage() 
    navigationController?.view.backgroundColor = .clear 
    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) 
    navigationController?.navigationBar.backgroundColor = .clear 
    navigationController?.navigationBar.barTintColor = .clear 
} 

我缺少什么?

+0

您是否尝试使其不透明而不是半透明? – arvidurs

+0

检查这个帖子https://stackoverflow.com/questions/40176803/swift-navigation-bar-background-color-white-does-not-work/40178657#40178657 – Joe

回答

0

您更改了使其透明所需的所有属性,所以问题不在此处。有些事情,你可以检查,可能是太有问题:

  1. 任何类型UINavigationBar.appearance()全局定义的
  2. UINavigationControllerUINavigationBar扩展
  3. 可能后viewDidLoadviewWillAppearviewDidAppearlayoutSubviews进行任何其他更改...)在被测类或其子类中
  4. 故事板/ XIB上的UINavigationController上的定制
  5. This是有点愚蠢,但检查你的navigationController不是零
+0

这是一个非常新鲜的项目,基于Xcode 9的基本主/细节,所以你提到的大部分事情都没有完成。我发布的代码实际上是VC中唯一的代码。话虽如此,我试图让这个工作(在做代码之前)做了一些改变。我会恢复这些变化,并给予一个旋风。 –

+0

用一个'UINavigationController'和两个'UIViewController'将你的代码添加到一个具有一个故事板的项目中,并且它完美地工作。这就是为什么我提出了不同的方法,因为我不知道你使用的代码的性质。你可以做的另一件事是清理,删除派生数据和重建,因为XIB和故事板可以被缓存。 – jvrmed

+0

良好的调用派生数据....很好,可能是这种情况。我会给它一个旋风。我打算再给它一次。会及时向大家发布。 –

0

已经创建使用Xcode中9的默认主详细模板的项目后,所以,我决定的问题不是DerivedData,而是“推到另一个导航控制器”。我的项目有以下结构:

What Xcode 9 Generated with Master/Detail template

我把它改成如下:

Drop the split view controller & extra navigationcontroller

建立我的故事板这样它的所有工作之后......我感到惊讶的是尽管如此,使用第二个navcontroller(其中嵌入了DetailViewController的那个)不起作用。任何人有什么想法,为什么?

0

尝试navigationController?.navigationController?.navigationBar

拆分视图控制器把详细导航控制器到主导航控制器在水平紧凑环境。

所以有两个导航控制器和两个导航栏。您更改一个导航栏,但显示另一个导航栏