我有一个UIViewController
子类,当前显示状态栏。在viewDidLoad
中,我呼叫以下内容:
[self setNeedsStatusBarAppearanceUpdate];
然后我也实施了这个声明:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
当用户点击按钮时,我调用一个显示我创建的UIView
子类的方法。所有方法都告诉子类将它的alpha
属性设置为1,以便它出现在屏幕上。
我的问题是,我想在显示这个UIView
子类时隐藏状态栏。
我尝试在控制器和视图子类中调用以下内容:
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
状态栏永远不会隐藏。显然我不能使用像下面这样的常规方法,因为它会完全隐藏控制器中的状态栏,我只想在显示视图子类时隐藏它:
- (BOOL)prefersStatusBarHidden {
return YES;
}
关于如何实现这一目标的任何想法?我顺便使用nib文件来表示UIViewController
和UIView
。
答案 0 :(得分:0)
为什么不创建属性并覆盖其setter,例如:
(在界面中)
@property (nonatomic, assign) BOOL statusBarHidden;
(在实施中)
- (void)setStatusBarHidden:(BOOL)statusBarHidden
{
if (_statusBarHidden != statusBarHidden)
{
_statusBarHidden = statusBarHidden;
[self setNeedsStatusBarAppearanceUpdate];
}
}
并根据需要进行设置。
然后修改状态栏隐藏视图控制器方法,如下所示:
- (BOOL)prefersStatusBarHidden
{
return self.statusBarHidden;
}