2017-08-02 66 views
0

我有一個導航欄項目。當應用程序加載時,我有這個代碼,所以導航欄有我想要的高度...與我的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) 
} 

的問題是,當我按下爲homeButton,然後我返回到應用程序,導航欄設置高度,我希望高度像第一次運行應用程序

這似乎是當我第一次運行該應用程序,導航欄的高度採取我想要的值,但然後,當我關閉並重新打開該應用程序會採用原始​​值(導航欄的默認高度值)。

我該怎麼辦?我應該實施另一種方法嗎?謝謝!!!

回答

0

我會建議在故事板文件中正確使用自動佈局約束。然後,您不必以編程方式設置高度。但是,如果您想以編程方式操作,請將代碼移至ViewDidload而不是ViewDidAppear方法。

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

是的,我試過......但是當我關閉應用程序並重新打開它時,導航欄的高度與第一次不同。我現在不是爲什麼會發生這種情況 – Edwjonn

+0

退出應用程序後關閉你的意思? –

+0

是的。根本沒有退出,當我按homeButton時,發生這種情況,所以應用程序仍在第二架飛機中工作 – Edwjonn

0

在故事板中選擇您的Navaigation Item > Prompt Field附加空間,增加導航條的高度

而且具有在任何viewDidAppear代碼(如你有今天)或viewWillAppear中

+0

事情是,我沒有故事板 – Edwjonn

+0

在這裏你去:self.navigationItem.prompt =「」 – Joe

+0

是的,它的工作原理。所以我試圖說,我刪除了我的代碼,現在導航欄獲得比默認更高的高度。但是,我怎樣才能改變高度? – Edwjonn

0

viewWillAppearviewDidAppear方法不設計工作就是這樣。如果您的應用程序進入不活動狀態,並且在前臺使用UIViewController時再次變爲活動狀態,它將不會調用任何這些方法。

您可以從applicationDidBecomeActive方法中追蹤AppDelegate

但是,如果你想知道,在一個特定的視圖控制器,你可以使用一個名爲UIApplicationDidBecomeActive

0

我想你應該繼承的UINavigationController的通知,但保留導航欄它的自我是最好的,如果您笏添加你可以在ViewController的視圖中添加一個uitoolbar,然後toolBar.frame =(0,64,screenWidth,30),然後刪除導航欄的發線,它會看起來像導航欄已被擴展