想要实现滑动状态栏的滑动侧面菜单。在iOS中

时间:2013-09-27 12:23:02

标签: iphone ios objective-c ios7 uistatusbar

我有兴趣在我的应用程序中实现左侧菜单我已经使用了NVSlideMenuController。它工作正常。

但我想修改它。我想用contentViewController滑动状态栏,不想在MenuViewController上显示状态栏。

目前它看起来像下面的图像

enter image description here

我希望和下面的图像一样

enter image description here

提前致谢

4 个答案:

答案 0 :(得分:11)

您可以尝试在第二张图片上关闭3G,您会注意到statusBar没有更新。

它似乎是 iOS7

中的新api
[[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];

这可能与您提出的问题相同,并且有一个演示可以显示您想要的内容。

Moving status bar in iOS 7

答案 1 :(得分:2)

你可以通过链接keyWindow的框架来实现这一点(你可以通过[[UIApplication sharedApplication] keyWindow]得到这个(UIWindowUIView的子类)。这应该可以使一切正确,你可能需要另外制作UIWindow来从左边开出其他东西。

答案 2 :(得分:1)

您无法移动状态栏。您可以做的最好是为该视图控制器隐藏它:

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    if (animated)
    {
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
    }
    else
    {
        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
}

- (void) viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    if (animated)
    {
        [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];
    }
    else
    {
        [[UIApplication sharedApplication] setStatusBarHidden:NO];
    }
}

尝试使用UIStatusBarAnimation的不同值来查看最佳效果。有三个值:UIStatusBarAnimationNoneUIStatusBarAnimationFade和UIStatusBarAnimationSlide`。

答案 3 :(得分:0)

这不是答案,而是回答詹姆斯的答案,因为格式在评论中断了。

事实是,设置keyWindow的框架将无法移动状态栏。通过设置断点并打印出keyWindow递归描述,我们会注意到里面没有状态栏信息。

(lldb) po [[[UIApplication sharedApplication] keyWindow] recursiveDescription]
<UIWindow: 0x8c5bf80; frame = (0 0; 320 480); gestureRecognizers = <NSArray: 0x8c5c500>; layer = <UIWindowLayer: 0x8c5c0a0>>
   | <UIView: 0x8b49700; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x8b496b0>>
(lldb) 

关注Chris's链接Simon's回答是否完成工作