隐藏状态栏时,我的导航栏在iOS7中向上移动
我试图隐藏状态栏,但保持“较大”的导航栏高度。 现在当我隐藏状态栏时,通过设置- (BOOL)prefersStatusBarHidden
为YES
,然后调用[self setNeedsStatusBarAppearanceUpdate];
。 这个问题是,导航栏将滑动,并不会留下我试图显示的通知的空间。 简单地添加视图到状态栏不是一个选项,我们的状态栏/导航具有迷幻效果。 有没有人有线索如何保持与状态栏高度的标准导航栏高度,并从中删除状态栏?
编辑; 我最终做的是冒险,并通过私有API获取状态栏的UIWindow,并抵消这一点。
编辑2; 应用获得了私有API的批准。 尽pipe谨慎!
你可以创build一个自定义的UIView框架
customView.frame=CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height);
也按照以下步骤隐藏您的状态栏
转到info.plist并添加两个属性(如果不存在)。 将“状态栏最初隐藏”设置为YES
,并将UIViewControllerBasedStatusBarAppearance
设置为NO
。 这将隐藏您的应用程序的状态栏。
在您的视图中添加此代码控制器:
if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { self.edgesForExtendedLayout = UIRectEdgeNone; }
你应该使用UIBarPositioningDelegate Protocol.
的positionForBar:
方法UIBarPositioningDelegate Protocol.
我不想把另一个答案或复制/过去,所以你应该仔细看看下面的问题\答案。 🙂
iOS 7状态栏与NavigationBar碰撞
iOS 7的UIToolBar覆盖状态栏
状态栏在iOS7中重叠内容
我不得不这样做一次。 我最终创build了自己的自定义导航栏,然后将帧设置为:
navBar.frame=CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height);
它在当时为我工作。 试试吧。
另一个解决方法在这里:子类UINavigationController
覆盖方法:
- (void)viewWillLayoutSubviews { [super viewWillLayoutSubviews]; if (self.navigationBar.frameMinY < 1) { self.navigationBar.frameHeight = 64; } else { self.navigationBar.frameHeight = 44; } }
其中设置frameMinY
设置frame.origin.y
和设置frameHeight
设置frame.size.height