显示状态栏,然后将其隐藏在按钮上

时间:2014-10-16 22:02:23

标签: ios objective-c uiview uiviewcontroller

我有一个UIViewController子类,当前显示状态栏。在viewDidLoad中,我呼叫以下内容:

[self setNeedsStatusBarAppearanceUpdate];

然后我也实施了这个声明:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

当用户点击按钮时,我调用一个显示我创建的UIView子类的方法。所有方法都告诉子类将它的alpha属性设置为1,以便它出现在屏幕上。

我的问题是,我想在显示这个UIView子类时隐藏状态栏。

我尝试在控制器和视图子类中调用以下内容:

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

状态栏永远不会隐藏。显然我不能使用像下面这样的常规方法,因为它会完全隐藏控制器中的状态栏,我只想在显示视图子类时隐藏它:

- (BOOL)prefersStatusBarHidden {
          return YES;
  }

关于如何实现这一目标的任何想法?我顺便使用nib文件来表示UIViewControllerUIView

1 个答案:

答案 0 :(得分:0)

为什么不创建属性并覆盖其setter,例如:

(在界面中)

@property (nonatomic, assign) BOOL statusBarHidden;

(在实施中)

- (void)setStatusBarHidden:(BOOL)statusBarHidden
{
   if (_statusBarHidden != statusBarHidden)
   {
      _statusBarHidden = statusBarHidden;
      [self setNeedsStatusBarAppearanceUpdate];
   }
}

并根据需要进行设置。

然后修改状态栏隐藏视图控制器方法,如下所示:

- (BOOL)prefersStatusBarHidden
{
   return self.statusBarHidden;
}