用自己的视图替换状态栏

时间:2014-03-19 18:12:32

标签: ios objective-c uinavigationbar offset uistatusbar

我想用我自己的视图替换我的应用程序中的UIStatusBar。

enter image description here

我假设我需要隐藏状态栏 - 这是对的吗?

隐藏状态栏的问题是导航栏向上移动以占据其原始位置。如何添加我的视图并将所有内容移回20 px?

enter image description here

假设我不必删除状态栏,而是可以用我的视图覆盖它,那么我就有了背景颜色的问题。这会在视图之间发生变化,因此我需要屏蔽现有的状态栏文本 - 我该怎么做?

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

第一步是隐藏状态栏。在iOS 7中,您可以通过添加prefersStatusBarHidden function来执行此操作,如下所示:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

这将隐藏状态栏。

要解决您提到的移动问题,您需要将viewController的状态栏样式设置为none(在界面编辑器中)。

首先选择左侧面板中的View Controller

vc

转到Xcode右侧的属性检查器,并将Status Bar设置为none

ins enter image description here

就是这样,现在您可以使用自己的内容在屏幕顶部添加自己的视图:)

答案 1 :(得分:1)

使用self.view的框架进行一些调整,你的方法是正确的。

将以下方法添加到viewController,

-(void)viewWillLayoutSubviews{
    [super viewWillLayoutSubviews];
    self.view.frame =CGRectMake(0, 20, 320, [UIScreen mainScreen].bounds.size.height);
}

上面的方法将视图向下移动20个像素。

答案 2 :(得分:0)

要在iOS7中完全隐藏状态栏,请在Info.plist中将“查看基于控制器的状态栏外观”设置为NO,并在[[UIApplication sharedApplication] setStatusBarHidden:YES];中设置application:didFinishLaunchingWithOptions

答案 3 :(得分:0)

我认为您正在使用自动布局。因此,为了做到这一点,只需将所有视图放在另一个视图中,并在delta y中为ios6 / 7放置20px。并且不要忘记遵循Audun Kjelstrup的步骤。希望它能解决你的问题。