ios7 – 隐藏导航栏移动视图“向上”

前端之家收集整理的这篇文章主要介绍了ios7 – 隐藏导航栏移动视图“向上”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
通常的故事 – 我正在iOS 7下运行iOS 5/6应用程序并且导航栏行为更改导致问题.

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

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

状态栏始终隐藏.

我通过导航控制器进入视图控制器,因此有一个(黑色,半透明)导航栏位于我的全屏视图/ scrollView / imageView的顶部.

短暂延迟后,一些重叠标签会消失,导航栏会隐藏
单击即可恢复叠加标签并取消隐藏导航栏.
这适用于iOS 5/6 – 导航栏滑出屏幕顶部,露出视图/图像的顶部.

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

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

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

我没有尝试过改变行为:
更改IB视图控制器布局控件(在顶部栏下,在底栏下,调整​​滚动视图插图).在7.0下运行时,5.1,6.1和7.0的构建都会产生相同的结果.

self.edgesForExtendedLayout = UIRectEdgeNone

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

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

- (void) showOverlayInfo {
    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
    [[[self navigationController] navigationBar] setTranslucent:YES];
    [[self navigationController] setNavigationBarHidden:NO animated:NO];    

    overlayInfoHidden = NO;
    overlayInfoFading = NO;
    self.infoButton.hidden = NO;
    self.infoButton.alpha = 1;
    self.descriptionLabel.hidden = NO;
    self.descriptionLabel.alpha = 1;
}

隐藏覆盖信息的代码是:

- (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行为,请更改您拥有的每个视图控制器的设置!

原文链接:https://www.f2er.com/iOS/331869.html

猜你在找的iOS相关文章