Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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
Ios7 “隐藏导航栏移动视图”;“向上”;_Ios7 - Fatal编程技术网

Ios7 “隐藏导航栏移动视图”;“向上”;

Ios7 “隐藏导航栏移动视图”;“向上”;,ios7,Ios7,通常的情况是,我正在使一个iOS 5/6应用程序在iOS 7下运行,导航栏行为的改变导致了一个问题 该应用程序已经像iOS 7默认版本一样工作,具有全屏视图和半透明导航条“覆盖”视图。问题在于隐藏/取消隐藏导航栏会导致iOS 7中的不同行为。在iOS 5/6上,隐藏/取消隐藏导航栏不会更改视图。在iOS 7上,隐藏栏会在视觉上向上移动视图,在屏幕底部留下一个空白栏,取消隐藏栏会向下移动视图以占据整个屏幕(当然,导航栏位于顶部) 我需要继续支持iOS5,所以我不使用自动布局,但我使用全屏。 我有一

通常的情况是,我正在使一个iOS 5/6应用程序在iOS 7下运行,导航栏行为的改变导致了一个问题

该应用程序已经像iOS 7默认版本一样工作,具有全屏视图和半透明导航条“覆盖”视图。问题在于隐藏/取消隐藏导航栏会导致iOS 7中的不同行为。在iOS 5/6上,隐藏/取消隐藏导航栏不会更改视图。在iOS 7上,隐藏栏会在视觉上向上移动视图,在屏幕底部留下一个空白栏,取消隐藏栏会向下移动视图以占据整个屏幕(当然,导航栏位于顶部)

我需要继续支持iOS5,所以我不使用自动布局,但我使用全屏。 我有一个视图,其中我正在查看一个可缩放的图像——因此视图控制器有一个全屏视图,其中包含一个scrollView,其中包含一个imageView

状态栏始终处于隐藏状态

我通过导航控制器到达视图控制器,因此在全屏视图/滚动视图/图像视图的顶部有一个(黑色,半透明)导航栏

短暂延迟后,一些重叠标签会褪色,导航栏会隐藏 单击一次即可恢复覆盖标签并取消隐藏导航栏。 这在iOS 5/6上运行——导航栏从屏幕顶部滑出,显示视图/图像的顶部

在iOS 7上,当导航栏滑出屏幕顶部时,整个视图可视地向上移动相应的量(即44点),在屏幕底部留下一个黑色条。我可以通过在顶层视图上设置背景色并调整scrollview的大小来看到背景;视图的顶部确实会移离屏幕,并且背景色不会绘制在屏幕的底部(44点)

但是,self.view.frame不会更改,并保持在{0,0}320 x高度

当我点击恢复覆盖信息和导航栏时,视图向下移动以占据整个屏幕,半透明导航栏位于视图/图像的顶部

我尝试过的任何东西都不会改变行为: 更改IB view controller布局控件(在顶部栏下,在底部栏下,调整滚动视图插入)。5.1、6.1和7.0的构建在7.0下运行时都会产生相同的结果

self.edgesForExtendedLayout = UIRectEdgeNone
什么也不做。使用布局增量值没有任何作用。在IB中,当“视为”iOS 7和iOS 6及更早版本时,视图看起来相同。我打印了很多调试信息,但是当视图移到“屏幕外”时,视图(或滚动视图)似乎没有任何变化

显示覆盖信息的代码(首次显示视图时运行,在单次点击时运行)为:

隐藏覆盖信息的代码为:

- (void) hideOverlayInfo {
    overlayInfoHidden = YES;
    overlayInfoFading = NO;
    self.infoButton.hidden = YES;
    self.descriptionLabel.hidden = YES;
    [[self navigationController] setNavigationBarHidden:YES animated:YES];
}

有谁能告诉我我遗漏了什么(大概很简单)?

我终于找到了我的问题

关键事实是图像查看器视图控制器位于UIPageViewController中, 所以我所观察和实验的是另一个视图控制器的内部。 虽然我已经为图像查看器VC禁用了视图控制器设置调整滚动视图插入,但我还没有为创建UIPageViewController的包含VC执行此设置,并且UIPageViewController在UIScrollView的某个子类中显示页面。当我为母公司VC更改它们时,问题就消失了

所以我认为这个故事的寓意是:

  • 当局部不起作用时,请更全面地思考问题,因为可能您遗漏了一些重要的上下文
  • 如果您不想使用iOS 7行为,请更改您拥有的每个视图控制器的设置
- (void) hideOverlayInfo {
    overlayInfoHidden = YES;
    overlayInfoFading = NO;
    self.infoButton.hidden = YES;
    self.descriptionLabel.hidden = YES;
    [[self navigationController] setNavigationBarHidden:YES animated:YES];
}