我正在尝试创建一个类似于照片应用程序的界面,其中状态栏和导航栏淡入/淡出但我遇到了问题.如果我点击隐藏界面然后旋转设备,然后点击将其重新启动,然后导航栏重新定位在状态栏下方(见照片).如果我然后旋转设备,导航栏将返回到正确的位置.我怎样才能解决这个问题?

小智 32
这可能会有点晚,但我刚刚遇到了同样的问题.我通过透明状态栏,导航栏和工具栏设计了一个全屏幕阅读器视图,您可以通过点击屏幕中心淡入淡出.
我设法解决它的方式非常简单,基本上是问题的核心,如果这样:当你旋转视图并且NavigationController重新计算它的新位置时,它认为它应该在窗口的顶部,因为状态栏是隐.在此之后显示状态栏和导航栏时,它们会重叠.
解决这个问题的方法非常简单,只需保持BOOL即可记住您的叠加层是显示还是隐藏,并在ViewController中实现willRotateToInterfaceOrientation和willAnimateRotationToInterfaceOrientation.
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if (!isOverlayShowing)
{
[[UIApplication sharedApplication] setStatusBarHidden:NO];
}
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if (!isOverlayShowing)
{
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
[super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
Run Code Online (Sandbox Code Playgroud)
通过在这两种方法中快速显示和隐藏StatusBar,StatusBar会在NavigationBar重新计算其位置的确切时刻显示.我不知道这是否是解决这个问题的最好方法,但到目前为止,这种方法有效并且不会在屏幕上产生任何闪烁并且非常流畅.
我希望有问题的其他人可能偶然发现这篇文章并找到解决这个问题的简单方法.
| 归档时间: |
|
| 查看次数: |
4613 次 |
| 最近记录: |