隐藏在 iPad 上运行的 iPhone 应用程序的状态栏

Posted

技术标签:

【中文标题】隐藏在 iPad 上运行的 iPhone 应用程序的状态栏【英文标题】:Hiding the Status Bar for an iPhone app running on iPad 【发布时间】:2014-01-28 21:09:01 【问题描述】:

我的 iPhone 应用程序要求始终隐藏状态栏。这通常很容易做到,如果我只在 iPhone 上运行该应用程序,它就可以工作。但是,如果我在 iPad 上运行该应用程序,状态栏仍会出现在内容的顶部。那么,无论我的仅限 iPhone 的应用程序在什么设备上运行,我如何确保隐藏状态栏?我目前在我的代码中执行以下操作:

为每个视图控制器调用这个方法(我实际上在 UIViewController 上创建了一个类别,它为任何 VC 自动实现这个,但它基本上与在每个 vc 文件中编写它是一样的):

-(BOOL)prefersStatusBarHidden
    return YES;

我还在 Info.plist 中将“状态栏最初隐藏”设置为“是”,“查看基于控制器的状态栏外观”设置为“否”。我也试过检测正在使用的设备并调用

[UIApplication sharedApplication]setSetStatusBarHidden:YES]

在 AppDelegate 中,但也没有运气。所以,我相信我已经尝试了几乎所有人们想尝试的东西。

【问题讨论】:

我基本上什么都试了。在视图控制器中编写 prefersStatusBarHidden,在 Info.plist 中将“状态栏最初隐藏”设置为 YES,将“基于视图控制器的状态栏外观”设置为 NO。我还尝试检测正在使用哪个设备并调用 [UIApplication sharedApplication]setSetStatusBarHidden:YES],但也没有运气。在 iPhone 上运行时,仅在我的视图控制器上单独使用 prefersStatusBarHidden 即可 如果我把它做成一个通用应用程序,那么我的代码就可以工作并且状态栏会隐藏在 iPad 上。但是,这个应用程序并不是通用的,所以这不是一个可行的解决方案 如果你设置了prefersStatusBarHidden,“基于视图控制器的状态栏外观”应该设置为YES,你可能已经知道了,但你的措辞有点奇怪。 抱歉,我的意思是说我已经尝试将该键设置为 YES 和 NO,但都没有帮助。 检查你的代码你在哪里弄错了 【参考方案1】:

这似乎是在 iOS 7.1 中引入的,并且会影响运行具有视网膜图形的 iPhone 应用程序的非视网膜 iPad。

开发人员没有解决方案。我认为 Apple 将不得不修补这个...

问题设备: 平板电脑 2 iPad Mini(非视网膜)。

ios 7.0 中不存在此问题,并且可以通过发布的其他解决方案修复 7.0 的状态栏问题。

2014 年 9 月更新 - iOS 8:

iOS 8 已修复此错误!!!!!!

【讨论】:

Apple 针对 iOS 8 和 iOS 8.1 修复了此问题。标记为解决方案?【参考方案2】:

添加此代码。

- (BOOL)prefersStatusBarHidden
return YES;

【讨论】:

【参考方案3】:

YourViewController 中添加属性

@property BOOL statusBarHidden;

然后在ViewDidLoad中添加以下代码行

    [self prefersStatusBarHidden];
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
    self.statusBarHidden = YES;

然后在YourViewController中添加一个方法

- (BOOL)prefersStatusBarHidden
return YES;

并且不要忘记在您的代码中添加#import <UIKit/UIKit.h>,它适用于 IOS6.1 和 7.0 :)

【讨论】:

此代码存在相同问题。同样,该问题仅在 iPad 上以 2x 模式运行 iPhone 应用程序时才会出现。否则,仅使用 prefersStatusBarHidden 就足以隐藏状态栏。感谢您的建议! 你可以试试这个链接可能会帮助你解决问题forums.macrumors.com/showthread.php?t=1649030

以上是关于隐藏在 iPad 上运行的 iPhone 应用程序的状态栏的主要内容,如果未能解决你的问题,请参考以下文章

UIPickerView 作为 inputView 不隐藏在 iPad 上

如何使用 iOS 13 在 iPad/iPhone 上隐藏页面缩放栏

在 iPhone 应用程序中隐藏已经开发的 iPad 类

隐藏状态栏 iPad iOS 7.0

为啥应用程序可以在 iPhone 上运行,而不是在 iPad 上运行?

在 iPad 缩放模式下隐藏状态栏会向下推窗口