【问题标题】:iOS 7 - Hide status bar on certain viewiOS 7 - 在某些视图上隐藏状态栏
【发布时间】:2013-10-04 05:36:03
【问题描述】:

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

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

我尝试使用基于 UIViewController 的状态栏 = YES 更改 plist 文件(我只希望在拉起该模式视图时隐藏 UIStatusBar

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

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

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

似乎没有任何效果。有人可以帮忙吗?

【问题讨论】:

标签: ios objective-c uistatusbar


【解决方案1】:

在你的视图控制器中实现这个方法,

-(BOOL)prefersStatusBarHidden
{
    return YES;
}

然后在你想调用的地方调用这个方法,

[self prefersStatusBarHidden];

【讨论】:

  • 这是我想要的,但只有在模式视图处于活动状态时。我没有该视图的单独类,它与父控制器在同一个类中。这只会为父控制器隐藏它。当孩子被拉起来时,它会淡入。
  • 我无法完全理解您想要什么。调用此方法,当模态视图处于活动状态并检查模型视图是否处于活动状态时,返回是,否则返回否。如果(模态视图)返回是,否则返回否。
  • 我正在做的,但它只为父控制器做。它对模态视图没有影响。
【解决方案2】:

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

- (BOOL)prefersStatusBarHidden {
    return YES;
}

然后将其导入到使用选取器的类中,而不是初始化图像选取器,而是初始化子类。

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

【讨论】:

  • 不工作,您确定这些是您所做的唯一更改吗? p.s.它不是 UIImagePicker 它是 UIImagePickerController
  • 阳性。确保在分配、初始化 UIImagePickerController 时,您这样做是为了使用您的子类。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    已经成功地将 -(BOOL)prefersStatusBarHidden{...} 用于许多视图控制器,但它没有用于没有导航控制器的特定模式视图。根据 Karthika,我在 Check the iOS status bar hidden with a modal view controller 上取得了成功。

    【讨论】:

      【解决方案5】:
      -(void)viewWillApper:(BOOL)animated{
      [[UIApplication sharedApplication] setStatusBarHidden:YES];
      }
      -(void)viewWillDisappear:(BOOL)animated{
      [[UIApplication sharedApplication] setStatusBarHidden:NO];
      }
      

      此代码将设置您要隐藏状态栏的视图控制器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 2013-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多