使用UINavigationBar栏隐藏状态栏位置顶部附加

时间:2014-06-20 13:58:31

标签: ios7 uiviewcontroller uinavigationbar ios7-statusbar

我有rootViewController - UINavigationController。 如您所知UINavigationControllerUINavigationBar。 在iOS 7中UINavigationBar可以使用barPosition topAttached。 我想通过单击按钮隐藏ON / OFF statusBar。但我也希望UINavigationBar始终是barPositionTopAttached。

- (BOOL)prefersStatusBarHidden {
   return __statusBarHidden;
}

- (IBAction)tapShowPhotosButton:(id)sender {
    __statusBarHidden = !__statusBarHidden;
    [self setNeedsStatusBarAppearanceUpdate];
}

现在UINavigationBar已将barPositiontopAttached更改为顶部,依此类推。

2 个答案:

答案 0 :(得分:0)

试试这个:

- (IBAction)tapShowPhotosButton:(id)sender 
{
    __statusBarHidden = !__statusBarHidden;
    [[UIApplication sharedApplication] setStatusBarHidden:__statusBarHidden withAnimation:UIStatusBarAnimationSlide];
    [self setNeedsStatusBarAppearanceUpdate];
}

导航栏应自动移动状态栏

答案 1 :(得分:0)

我写信给技术支持并得到下一个答案:

  

如文档中所述,当栏需要知道其在新窗口中的位置时,会调用-positionForBar。状态栏隐藏或取消隐藏时不会调用它。导航控制器处理调整导航栏的大小以响应状态栏更改。不幸的是,UINavigationController没有提供任何API来自定义导航栏调整大小的行为。