2016-11-22 6 views
13

Ich bin mir ziemlich sicher, dass dies nicht doppelt ist, weil ich auf andere Antworten schaute und sie alle veraltet sind und keine genaue Antwort liefern.Wie kann ich die Höhe der Navigationsleiste ändern Swift 3

Ich habe Navigation Controller und mehrere View-Controller. Ich möchte die Navigationsleiste ein wenig größer machen, damit sie der Textgröße entspricht, die ich brauche. Wie kann ich das machen ?

Ich habe versucht, dieses:. UINavigationBar.appearance() frame = CGRect (x: 0,0, y: 0,0, Breite: 320,0, Höhe: 210,0), aber es passiert nichts ...

Auch wasn I‘ Mit der Xcode-Layout-Schaltfläche können Sie der Navigationsleiste beliebige Einschränkungen hinzufügen.

Hoffe jemand kann mir helfen, dieses Problem zu beheben. Danke im Voraus!

enter image description here

+0

http://stackoverflow.com/questions/40316352/increase-navigationbar-height/40320225#40320225 – Joe

Antwort

21

Hier ist eine Möglichkeit, es zu tun:

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

} 
+0

Großer Dank für Ihre Antwort, funktionierte gut. Zu meiner Überraschung fügte ich diesen Code in einem VC hinzu und es funktionierte für die gesamte App ... Ich habe versucht, Ihren Code ein wenig zu ändern und ihn in App Delegate einzugeben, aber es hat leider nicht funktioniert. Aber ich denke, das ist in Ordnung. – KirillC

+2

@KirillC Sie könnten UINavigationController ableiten und dort Frankies Code hinzufügen. –

+0

@KirillC Gern geschehen. Bitte überlegen Sie, die Antwort zu akzeptieren, wenn es geholfen hat. Sie könnten tun, was Brett gesagt hat. Auch wenn Sie es nur in einer VC benötigen, können Sie eine ähnliche Methode hinzufügen, um viewWillDisappear die Höhe zurück zu ändern. – Frankie

-1

können Sie Ihre Navigationsleiste von xib (mit Ihrer Körpergröße) und dann ziehen:

self.navigationController?.navigationBar.addSubview(yourNavBarView) 

in alternativen, Wenn Sie UIView aus Code erstellen möchten, geben Sie

let viewNavBar = UIView(frame: CGRect(
    origin: CGPoint(x: 0, y:0), 
    size: CGSize(width: self.view.frame.size.width, height: 100))) 
ein

und dann zur Navigationsleiste hinzufügen.

+0

Sie müssen nicht "init" so sagen. - Ein großer Fehler ist hier, dass Sie eine UIView vanilla angelegt haben, keine UINavigationBar, die das OP haben möchte. – matt

7

können Sie eine Klasse erstellen, basierend auf UINavigationBar wie diese

class TTNavigationBar: UINavigationBar { 

    override func sizeThatFits(_ size: CGSize) -> CGSize { 
     return CGSize(width: UIScreen.main.bounds.width, height: 55) 
    } 

} 

Und fügen Sie sie Navigation.

+0

Haben Sie eine Idee, warum diese Methode in meinem Fall nie aufgerufen wird? Ich habe diesen Code einfach in meine benutzerdefinierte UINavigationBar-Klasse kopiert und in das Storyboard in meinen Navigationsleisten eingefügt. – andrejbroncek

+0

@andrejbroncek Sind Sie sicher, dass Ihre benutzerdefinierte UINavigationBar ausgeführt wird? -Ein häufiges Problem ist, dass Sie manchmal mit mehreren UINavigationController enden und vielleicht wird Ihre benutzerdefinierte UINavigationBar nie ausgeführt oder ist nicht die, die angezeigt wird –

5

können Sie diesen Code in der Klasse schreiben, die UINavigationController

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    let height = CGFloat(72) 
    navigationBar.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: height) 
} 
1

erstreckt Dies könnte besser sein, wenn Ihr Navigationsleisten in Ihrer Anwendung alle gleich eingestellte Höhe haben.

extension UINavigationBar { 
    open override func sizeThatFits(_ size: CGSize) -> CGSize { 
     return CGSize(width: UIScreen.screenBounds.width, height: 51) 
    } 
} 
+0

@Hemang Fügen Sie einfach den Code in Ihr Projekt. – HMHero

Verwandte Themen