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

Posted

技术标签:

【中文标题】返回前台时导航栏位置重置【英文标题】:Navigationbar position reset when turn back to foreground 【发布时间】:2015-06-17 06:13:16 【问题描述】:

我在我的第一个 ViewContoller 中将导航栏设置为 viewWillAppear

self.navigationController.navigationBar.frame = CGRectMake(0.0, 64.0, self.navigationController.view.bounds.size.width, 44.0);

它让我在栏上方放了一个标志。

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

我试过 addObserver 那个 catchUIApplicationWillEnterForegroundNotification 并再次设置导航栏的框架。但它不起作用。

请帮忙, 非常感谢。

【问题讨论】:

我面临同样的问题。你找到解决办法了吗? 【参考方案1】:

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

[[UINavigationBar appearance] setFrame:];

如果你愿意,你可以改变它的背景图片

[[UINavigationBar appearance] setBackgroundImage:forBarMetrics:];

【讨论】:

我将它添加到 didFinishLaunchingWithOptions [[UINavigationBar appearance] setFrame:CGRectMake(0.0, 64.0, self.window.bounds.size.width, 44.0)]; 。但是导航栏没有变化。【参考方案2】:

我找到了解决办法。

    子类 UINavigationBar。

    实现- (CGSize)sizeThatFits:(CGSize)size方法改变导航栏大小。

比如

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

效果很好。

【讨论】:

以上是关于返回前台时导航栏位置重置的主要内容,如果未能解决你的问题,请参考以下文章

iOS 调整导航栏返回按钮的位置

iOS 13 导航栏问题 - 部分导航栏变得透明

iOS 调整导航栏返回按钮的位置

页面刷新跳转后,导航栏高亮显示跳转前的点击位置

导航栏重置其框架

返回时删除导航栏