Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
隐藏状态栏iOS 7时的图幅更改_Ios_Iphone_Objective C_Uinavigationcontroller_Uinavigationbar - Fatal编程技术网

隐藏状态栏iOS 7时的图幅更改

隐藏状态栏iOS 7时的图幅更改,ios,iphone,objective-c,uinavigationcontroller,uinavigationbar,Ios,Iphone,Objective C,Uinavigationcontroller,Uinavigationbar,我正在努力解决这个问题一段时间 我在导航控制器中嵌入了一个视图控制器,我想切换状态栏“隐藏/显示” 问题是,当我将状态栏设置为隐藏时,我的所有视图(包括导航栏)都会跳起来 如何避免这种行为? 我只想隐藏状态栏,不带任何其他效果,并且导航栏的高度保持从0扩展到64像素 我创建了一个示例来演示这个问题 关于可能的解决方案的几点注意事项: -我不能使用自动布局 -导航栏不能是半透明的 -“基于视图控制器的状态栏外观”必须设置为否。老实说,我建议您修改您的愿望。您描述的行为深深地嵌入到UINavigat

我正在努力解决这个问题一段时间

我在导航控制器中嵌入了一个视图控制器,我想切换状态栏“隐藏/显示”

问题是,当我将状态栏设置为隐藏时,我的所有视图(包括导航栏)都会跳起来

如何避免这种行为?
我只想隐藏状态栏,不带任何其他效果,并且导航栏的高度保持从0扩展到64像素

我创建了一个示例来演示这个问题

关于可能的解决方案的几点注意事项:
-我不能使用自动布局
-导航栏不能是半透明的

-“基于视图控制器的状态栏外观”必须设置为否。老实说,我建议您修改您的愿望。您描述的行为深深地嵌入到UINavigationController中,因此,基本上,如果不编写自己的UINavigationController子类,您就无法完成所描述的操作-不过,更诚实地说,我还不清楚您必须覆盖什么才能干扰此行为,因此,可能有必要编写一个替代接口。例如,您可以拥有一个包含导航栏和界面的显示视图控制器,现在您可以完全控制所有内容的高度和位置。。。我觉得这条路不值得走。

首先将所有视图和按钮弹簧和支柱更改为

然后将代码更改为

- (IBAction)toggleStatusBar:(UIButton *)sender {
    _hidden = !_hidden;

    [[UIApplication sharedApplication] setStatusBarHidden:_hidden withAnimation:UIStatusBarAnimationSlide];
    [UIView animateWithDuration:0.2 animations:^{
        CGRect frame = self.navigationController.navigationBar.frame ;

        _hidden?(frame.size.height +=20):(frame.size.height -=0);
        self.navigationController.navigationBar.frame = frame;

        CGRect frame2 = self.view.frame ;

        _hidden?(frame2.origin.y +=20):(frame2.origin.y -=0);
        _hidden?(frame2.size.height -=20):(frame.size.height -=0);

        self.view.frame = frame2;

    }];

}

你必须设置动画,否则隐藏状态栏时会出现问题并显示黑色区域。

这里的问题是,在设置动画时导航栏会移动。我试图尽可能简化问题,我的真实UI结构是一个有3个视图的滚动视图,用户可以像Snapchat一样在它们之间左右滑动,和snapchat一样,我想隐藏中间视图的状态栏,并在用户向左/向右滑动到其他视图时显示它。“修改您的愿望”=琐碎。问题在于改变客户的愿望。