2010-02-02 87 views
6

我想显示一个模式视图,并希望它覆盖iPhone的状态栏。显示模态视图时,iPhone状态栏会消失吗?

我试着将模式视图控制器的wantsFullScreenLayout属性设置为YES;我也将其父母的财产设置为YES。这不起作用,可能是因为模式视图显示在主窗口内容的下面,其中包括状态栏。

我的第二种方法放弃了整个“wantsFullScreenLayout”技术,以便在显示模态视图之前隐藏状态栏,然后在模态视图关闭后再将其打开。直到最后......模态视图的父视图布局不正确(其导航栏部分隐藏在状态栏后面)。调用 - [视图setNeedsLayout]不执行任何操作。

我该如何解决这个问题?

谢谢。

回答

2

您将需要在UIApplication- (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated

事情是这样的:

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; 

这应该隐藏有一个很好的动画渐变的状态栏。

+0

我已经试过了(见上面的第二种方法)。我没有问题让状态栏隐藏并重新出现;问题是一旦我使它重新出现,视图布局正确。谢谢。 – 2010-02-03 00:37:07

+0

只需调整视图的大小?将它的框架设置为(0,20,320,460)? – Jasarien 2010-02-03 09:51:38

+0

工作正常!仍然不完全确定为什么我必须手动设置...但谢谢! – 2010-02-05 01:09:39

12

迟到了,但我想我可以拯救别人一些麻烦。

我有一个VC几个推入NavController(让我们称之为VC父母)。现在我想要显示隐藏导航栏AND状态栏的模态屏幕(CHILD)。经过多次实验,我知道这是有效的...

1)因为我通过在PARENT中调用presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated来呈现CHILD VC,导航栏不再涉及(不需要隐藏它)。

2)CHILD VC nib中的视图大小为320x480。

3)CHILD VC设置self.wantsFullScreenLayout = YES;viewDidLoad

4)刚刚呈现CHILD之前,隐藏与[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:YES];

5状态栏)在父使用委托协议方法驳回CHILD VC,并在dismissModalViewControllerAnimated:YES]之前致电[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:YES];以确保导航栏绘制在正确的位置

希望这有助于您。

+0

+1)。我解决了它,但没有执行其他步骤,并在-viewWillDisappear中再次显示状态栏:在模式视图中。 – 2011-10-05 18:51:44

+0

为我出色地工作! – Chris 2012-07-02 03:57:11

+2

关于第4步,方法签名是' - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation'。你发送了第二个参数BOOL而不是UIStatusBarAnimation。 – 2012-10-11 10:02:16