2017-10-12 87 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

拆分視圖控制器把詳細導航控制器到主導航控制器在水平緊湊環境。

所以有兩個導航控制器和兩個導航欄。您更改一個導航欄,但顯示另一個導航欄