【问题标题】:Make iPhone status bar disappear when displaying a modal view?显示模态视图时使 iPhone 状态栏消失?
【发布时间】:2011-01-12 09:40:53
【问题描述】:

我想显示一个模态视图,并希望它覆盖 iPhone 的状态栏。

我尝试将模态视图控制器的 WantsFullScreenLayout 属性设置为 YES;我还将其父级的属性也设置为 YES。这不起作用,大概是因为模态视图显示在主窗口内容下方,其中包括状态栏。

我的第二种方法放弃了整个“wantsFullScreenLayout”技术,转而在模态视图显示之前隐藏状态栏,然后在模态视图关闭后将其重新打开。这一直有效...模态视图的父视图布局不正确(其导航栏部分隐藏在状态栏后面。)调用 -[view setNeedsLayout] 什么都不做。

我应该如何解决这个问题?

谢谢。

【问题讨论】:

    标签: iphone modal-dialog fullscreen statusbar


    【解决方案1】:

    加入讨论晚了,但我想我可以为别人省点麻烦。

    我有一个 VC 多次推送到 NavController(我们称该 VC 为 PARENT)。现在我想显示一个隐藏导航栏和状态栏的模式屏幕(儿童)。经过大量实验,我知道这是可行的......

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

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

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

    4) 在展示 CHILD 之前,使用 [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:YES]; 隐藏状态栏

    5) 在 PARENT 中使用委托协议方法关闭 CHILD VC,并在 dismissModalViewControllerAnimated:YES] 之前调用 [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:YES]; 以确保导航栏绘制在正确的位置

    希望这会有所帮助。

    【讨论】:

    • +1 表示 4)。我在没有其他步骤的情况下解决了它,并在 -viewWillDisappear: 模式视图中再次显示了状态栏。
    • 关于第4步,方法签名为- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation。您向第二个参数发送了 BOOL 而不是 UIStatusBarAnimation。
    【解决方案2】:

    你会想要UIApplication 类上的- (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated

    类似这样的:

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

    这应该用漂亮的淡入淡出动画隐藏状态栏。

    【讨论】:

    • 我已经尝试过了(参见上面的第二种方法)。我没有问题让状态栏隐藏并重新出现;问题是一旦我让它重新出现,视图布局就正确了。谢谢。
    • 只是调整视图大小?将它的框架设置为 (0,20,320,460)?
    • 成功了!仍然不完全确定为什么我必须手动设置...但谢谢!
    • 我可能是错的 - 但我认为设置需要布局只会调整大小/重新定位子视图,而不是视图本身。如果你打电话给setNeedsDisplay,它可能会起作用,但我不能保证任何事情。
    • 您在哪里调整视图大小并重新显示状态栏?我尝试在 viewWillAppear 中做这两个都没有运气。状态栏会回来,但布局不正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2018-02-25
    • 2016-06-12
    • 1970-01-01
    相关资源
    最近更新 更多