2017-08-02 91 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),然后删除导航栏的发线,它会看起来像导航栏已被扩展