2017-08-02 3 views
0

Ich habe eine Navigation Bar Item. Wenn die App lädt, ich diesen Code haben, so hat die navbar die Höhe, die ich will ...Probleme mit meinem navBarItem

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    let height: CGFloat = 38 
    let bounds = self.navigationController!.navigationBar.bounds 
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + height) 
} 

Das Problem, dass, wenn ich die homebutton drücken und dann kehre ich zu der App, ändert sich die navbar die Höhe , und ich möchte die Höhe wie beim ersten Mal, wenn Sie die App ausführen

Es scheint wie wenn ich die App zum ersten Mal ausführen, die Höhe der Navbar nimmt den Wert, den ich will, aber dann, wenn ich schließe und wieder öffnen die App, es nimmt den ursprünglichen Wert (der Standardwert Höhe der Navigationsleiste).

Was soll ich tun? Sollte ich eine andere Methode implementieren? Vielen Dank!!!

Antwort

0

Ich würde empfehlen, Auto-Layout-Constraint ordnungsgemäß in Ihrer Storyboard-Datei zu verwenden. Und dann müssen Sie die Höhe nicht programmgesteuert festlegen. Aber wenn Sie programmgesteuert manipulieren möchten, dann verschieben Sie Ihren Code in ViewDidload statt ViewDidAppear Methode.

let height: CGFloat = 38 
let bounds = self.navigationController!.navigationBar.bounds 
self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + height) 
+0

Ja, ich habe es versucht ... Aber wenn ich die App schließe und sie wieder öffne, ist die Höhe der Navbar anders als beim ersten Mal. Ich weiß jetzt nicht, warum das passiert – Edwjonn

+0

Schließen Sie meinen, nach dem Beenden der App? –

+0

Ja. Nicht beendet überhaupt, es geschieht, wenn ich den homeButton drücke, also arbeitet die APP noch in einer zweiten Ebene – Edwjonn

0

in der Storyboard wählen Sie Ihre Navaigation Item > Prompt Field space die Höhe der Navigationsleiste

Und haben Sie den Code in entweder viewDidAppear zu erhöhen (Wie Sie heute haben) oder viewWillAppear

+0

Die Sache ist, dass ich kein Storyboard habe – Edwjonn

+0

Hier gehts: self.navigationItem.prompt = "" – Joe

+0

Ja, es funktioniert. Also habe ich versucht, das zu tun, und ich habe meinen Code gelöscht, und jetzt bekommt die Navbar eine größere Höhe als die Standard. Aber wie kann ich die Höhe ändern ??? – Edwjonn

0

viewWillAppear oder viewDidAppear Methoden sind nicht entworfen, um so zu arbeiten. Wenn Ihre Anwendung inaktiv wird und während eines UIViewControllers im Vordergrund wieder aktiv wird, ruft sie keine dieser Methoden auf.

Sie können dies von applicationDidBecomeActive-Methode in AppDelegate verfolgen.

Aber wenn Sie wollen wissen, dass in einem bestimmten View-Controller Sie die Benachrichtigung namens verwenden können UIApplicationDidBecomeActive

0

Ich denke, Sie sollten die UINavigationController Unterklasse, aber halten die navigationbar es selbst das Beste ist, wenn Sie hinzufügen wat etwas auf der Leiste, können Sie eine uitoolbar in der Ansicht ViewController, und toolBar.frame = (0,64, screenWidth, 30), dann löschen Sie die Haar Linie der Navigationsleiste, und es wird aussehen wie die Navigationsleiste erweitert

Verwandte Themen