2017-06-23 2 views
1
override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    let height = CGFloat(84) 
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: height) 
} 

このコードは、単にtitleViewの上にスペースを挿入します。ポイント(0,0)のカスタムタイトルビューは、その上に約20ポイントのスペースを持っています。高さ> 40がnavBarからはじまります。Swiftのナビゲーションバーの高さをプログラムでどのように変更できますか?

+0

44(navigationBar高さ)+ 20(ステータスバーの高さ)= 64は、標準的なものです。 –

答えて

1

あなたはUINavigationBarをサブクラス化することができます

class CustomNavigationBar: UINavigationBar { 
    override func sizeThatFits(_ size: CGSize) -> CGSize { 
     let newSize :CGSize = CGSize(width: self.frame.size.width,height: 84) 
     return newSize 
    } 
} 

そして、ナビゲーションコントローラを作成し、カスタムナビゲーションバーのクラスを使用するように初期化子を使用しています。

let nav = UINavigationController(navigationBarClass:CustomNavigationBar.self,toolbarClass: nil) 

UINavigationBarの既存の動作はすべて保持され、カスタム高さが採用されます。

OR

あなたはすでに試したのように:

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    let height: CGFloat = 84 //whatever height you want 
    let bounds = self.navigationController!.navigationBar.bounds 
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + height) 

} 

OR: あなたはナビゲーションbar.Thisを置き換えるためにカスタムビューを使用することができますChanging the height of the Navigation bar iOS Swift

2

このソリューションを試すことができ、より簡単です。フレキシブル。ナビバーを非表示にして、カスタムビューを実装します。

class ViewController : UIViewController { 

    var navBar: UINavigationBar = UINavigationBar() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.setCustomNavBarView() 
    } 

    func setCustomNavBarView() { 
     self.navBar.frame = CGRect(x: 0, y: 0, width: 350, height: 50) // Set you custom width and Height 
     self.navBar.backgroundColor = UIColor.gray 
     self.view.addSubview(navBar) 

    } 
} 

それを行う方法についての簡単なtutorial:このことができます

希望を!

0
 class ViewController: UIViewController { 
     var navBar: UINavigationBar = UINavigationBar() 
     override func viewDidLoad() { 
      super.viewDidLoad() 
      // Do any additional setup after loading the view, typically from a nib.  
      self.setCustomNavBarView() 
    } 
`func setCustomNavBarView() { 
      self.navBar.frame = CGRect(x: 0, y: 0, width: 350, height: 100) // Set you custom width and Height 
      self.navBar.backgroundColor = UIColor.gray 
      self.view.addSubview(navBar) 
     } 
    ` 

SWIFT 3更新されたコードここで

関連する問題