与我的navBarItem相关的问题
问题描述:
我有一个导航栏项目。当应用程序加载时,我有这个代码,所以导航栏有我想要的高度...与我的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,然后我返回到应用程序,导航栏设置高度,我希望高度像第一次运行应用程序
这似乎是当我第一次运行该应用程序,导航栏的高度采取我想要的值,但然后,当我关闭并重新打开该应用程序会采用原始值(导航栏的默认高度值)。
我该怎么办?我应该实施另一种方法吗?谢谢!!!
答
我会建议在故事板文件中正确使用自动布局约束。然后,您不必以编程方式设置高度。但是,如果您想以编程方式操作,请将代码移至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)
答
viewWillAppear
或viewDidAppear
方法不设计工作就是这样。如果您的应用程序进入不活动状态,并且在前台使用UIViewController时再次变为活动状态,它将不会调用任何这些方法。
您可以从applicationDidBecomeActive
方法中追踪AppDelegate
。
但是,如果你想知道,在一个特定的视图控制器,你可以使用一个名为UIApplicationDidBecomeActive
答
我想你应该继承的UINavigationController的通知,但保留导航栏它的自我是最好的,如果您笏添加你可以在ViewController的视图中添加一个uitoolbar,然后toolBar.frame =(0,64,screenWidth,30),然后删除导航栏的发线,它会看起来像导航栏已被扩展
是的,我试过......但是当我关闭应用程序并重新打开它时,导航栏的高度与第一次不同。我现在不是为什么会发生这种情况 – Edwjonn
退出应用程序后关闭你的意思? –
是的。根本没有退出,当我按homeButton时,发生这种情况,所以应用程序仍在第二架飞机中工作 – Edwjonn