返回前台时导航栏位置重置
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;
效果很好。
【讨论】:
以上是关于返回前台时导航栏位置重置的主要内容,如果未能解决你的问题,请参考以下文章