2015-12-07 185 views
2

我正在爲iPhone製作iOS應用程序,而我正在使用導航控制器。在導航過程中的某個時刻,我將一個UISegmentedControl添加到視圖控制器,位於導航控制器的導航欄下方。我在導航欄中插入新的背景和陰影圖像,以使UISegmentedControl顯示爲導航欄的一部分。我這樣做:恢復默認的導航欄外觀

// nav bar color image 
    let rect = CGRectMake(0, 0, view.frame.width, 0.5)   // Used in navBar, size dosn't matter 
    UIGraphicsBeginImageContextWithOptions(rect.size, true, 0) 
    barBackgroundColor.setFill() 
    UIRectFill(rect) 
    let navBarBackground = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    // setup navbar 
    navigationController!.navigationBar.setBackgroundImage(navBarBackground, forBarMetrics: .Default) 
    navigationController!.navigationBar.shadowImage = UIImage() 
    navigationController!.navigationBar.tintColor = UIColor.blackColor() 
    navigationController!.navigationBar.translucent = false 

當我離開給定的視圖控制器,導航欄背景仍然改變。

如何恢復導航欄的外觀?

或者......

是否有嵌入UISegmentedControl爲展開的導航欄另一種方式?

自定義的背景和分段控制導航欄的圖像下面: Navbar with custom background. plus segment control below

當導航回到,導航欄cuntinues進行定製: enter image description here

編輯:

在一個視圖控制器,然後我更改背景圖像,我嘗試安全標準圖像:

override func viewDidAppear(animated: Bool) { 

    if sharedVariables.standartNavBarBackgroundImage == nil { 
     let herp = navigationController!.navigationBar.backgroundImageForBarMetrics(.Default) 
     sharedVariables.standartNavBarBackgroundImage = herp 
     let derp = navigationController!.navigationBar.shadowImage 
     sharedVariables.standartNavBarShadowImage = derp 
    } 
} 

兩個herpderpnil被設置後,dispite的導航欄是可見在這個momont。怎麼來的?

+0

顯示你正在尋找和它是什麼樣子,如果你不改變圖像 – Wain

+0

圖片added..The最終的結果應該是非標準導航欄的外觀最終結果的圖片.. – Wiingaard

回答

18

只需將背景圖像和陰影圖像設置爲nil即可獲得默認外觀。

1

使用iOS 11. *和Swift 4,您需要將barTintColor設置爲nil

navigationController?.navigationBar.barTintColor = nil