iOS 7 - 在特定视图上隐藏状态栏

时间:2013-10-04 05:36:03

标签: ios objective-c uistatusbar

这是一个相当独特的问题。我搜索了几个小时,但找不到答案。我希望我的应用中的所有UIViewControllers都可以看到UIStatusBar。但是在某个UIViewController上,当您点按UIButton时,以下方法会调用相机modalView控制器。我想在调用以下方法时隐藏状态栏:

-(BOOL)startCameraControllerFromViewController:(UIViewController*)controller
                                 usingDelegate:(id )delegate 

我尝试使用UIViewController状态栏更改plist文件状态栏= YES(我只想在拉出模态视图时隐藏UIStatusBar

我也在上述方法中尝试了以下内容:

[[UIApplication sharedApplication] setStatusBarHidden:YES 
                                   withAnimation:UIStatusBarAnimationNone];
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {

    [[UIApplication sharedApplication] setStatusBarHidden:YES 
                                       withAnimation:UIStatusBarAnimationNone];

似乎没什么用。有人可以帮忙吗?

5 个答案:

答案 0 :(得分:16)

在View Controller中实现此方法,

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

并在您想要的地方调用此方法,

[self prefersStatusBarHidden];

答案 1 :(得分:16)

通过继承UIImagePickerController并将其添加到.m文件来解决它:

- (BOOL)prefersStatusBarHidden {
    return YES;
}

然后将其导入到使用选择器的类中,而不是初始化imagepicker我初始化子类。

注意:确保plist文件中基于View控制器的状态栏外观设置为YES。

答案 2 :(得分:3)

您还可以做的就是像以前一样设置隐藏在plist中的状态栏。然后在app delegate中调用setStatusBarHidden:NO,在应用程序首次加载时将其设置为默认值。然后再次调用此方法,您需要使用值YES隐藏状态栏。

答案 3 :(得分:0)

已成功使用 - (BOOL)prefersStatusBarHidden {...}用于多个视图控制器,但它没有在没有导航控制器的情况下显示的特定模态视图。根据Karthika,我在Check the iOS status bar hidden with a modal view controller取得了成功。

答案 4 :(得分:0)

-(void)viewWillApper:(BOOL)animated{
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
-(void)viewWillDisappear:(BOOL)animated{
[[UIApplication sharedApplication] setStatusBarHidden:NO];
}

此代码将设置要隐藏状态栏的viewcontroller。