2017-09-23 127 views
2

在swift 3中,我能夠使用約束條件更改自定義導航欄的高度並簡單地設置高度。現在我不能再那樣做了。它實際上並沒有改變故事板中導航欄的高度。即使我去尺寸檢查員,高度字段是灰色的,我無法改變它。如果我以模態方式呈現視圖並希望顯示導航欄,那麼最佳做法是什麼?它不會自動顯示,因爲它是一個模態延續。快速導航欄的高度4

+1

這不是Swift 3和4之間的區別。這可能是iOS 11的變化。該語言無關緊要。 – rmaddy

+0

即使在故事板上,當我嘗試更改高度時,它也不會反映在視圖中。在Xcode 8中,它完美運行。 – Nevin

+0

我相信這與iPhone x的推出有關 – OverD

回答

0

我有類似的問題,所以我開始研究,我發現了一個解決方案,適合我...我要告訴我是怎麼做到的,但我不得不說,我不使用故事板,所以它是所有代碼...

1)你必須創建一個類類型的「UIView的」,然後把這個代碼在它:

class ExtendedNavBarView: UIView { 

override func willMove(toWindow newWindow: UIWindow?) { 
    super.willMove(toWindow: newWindow) 

    layer.shadowOffset = CGSize(width: 0, height: CGFloat(1)/UIScreen.main.scale) 
    layer.shadowRadius = 0 

    layer.shadowColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1).cgColor 
    layer.shadowOpacity = 0.25 
} 

2)然後,轉到類你有你的導航控制器。在viewDidLoad方法,把這個代碼:

navBar.shadowImage = #imageLiteral(resourceName: "TransparentPixel") 

    let extendedBar = ExtendedNavBarView() 
    extendedBar.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: 82) //The height value is gonna determinate the total height of the navbar 
    view.addSubview(extendedBar) 

    extendedBar.backgroundColor = UIColor(red: 249/255, green: 249/255, blue: 249/255, alpha: 1.0) 

基本上是用於的導航欄的擴展視圖,這取決於你把高度值,總的Navbar是要去或多或少高。

如果您想了解更多相關信息,您可以去這裏: Custom NavigationBar

此外,「TransparentPixel」的形象是在頁面中,你只需要下載示例項目。