我有一个导航栏项目。当应用加载时,我有这个代码,所以导航栏有我想要的高度......
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 :(得分:0)
我建议在storyboard文件中正确使用autolayout约束。然后您不必以编程方式设置高度。但是,如果您想以编程方式进行操作,请使用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)
答案 1 :(得分:0)
在Storyboard中选择Navaigation Item > Prompt Field
添加空格以增加导航栏的高度
将您的代码放在viewDidAppear(如今)或viewWillAppear
答案 2 :(得分:0)
viewWillAppear
或viewDidAppear
方法的设计并非如此。如果您的应用程序变为非活动状态并且在前台的UIViewController上再次变为活动状态,则它不会调用任何这些方法。
您可以使用applicationDidBecomeActive
中的AppDelegate
方法跟踪该内容。
但是如果你想知道在特定的视图控制器中你可以使用名为UIApplicationDidBecomeActive
的通知
答案 3 :(得分:0)
我认为你应该继承UINavigationController的子类,但保持自己的导航栏是最好的,如果你想在栏上添加一些内容,你可以在ViewController的视图中添加一个uitoolbar,以及toolBar.frame = (0,64,screenWidth,30),然后删除导航栏的发线,它看起来像导航栏已被扩展