返回前台时导航栏位置重置

Navigationbar position reset when turn back to foreground

我在 viewWillAppear

的第一个 ViewContoller 中设置了导航栏
self.navigationController.navigationBar.frame = CGRectMake(0.0, 64.0, self.navigationController.view.bounds.size.width, 44.0);

它让我在栏上方放置一个徽标。

但是当我将应用程序切换到后台并返回时,导航栏位置重置为顶部。

我试过 addObserver 捕获UIApplicationWillEnterForegroundNotification 并再次设置导航栏的框架。但它不起作用。

请帮忙, 非常感谢。

您可以尝试更改 NavigationBar 的外观,它会反映在整个应用程序中

[[UINavigationBar appearance] setFrame:];

如果需要,您可以更改其背景图片

[[UINavigationBar appearance] setBackgroundImage:forBarMetrics:];

我找到了解决方案。

  1. 子类 UINavigationBar.

  2. 执行 - (CGSize)sizeThatFits:(CGSize)size 方法来更改导航栏大小。

比如

- (CGSize)sizeThatFits:(CGSize)size {
    CGSize newSize = self.window.bounds.size ;
    newSize.height = 91;
    return newSize;
}

效果很好。