如何在 iOS 应用程序中完全删除 UIStatusBar?
Posted
技术标签:
【中文标题】如何在 iOS 应用程序中完全删除 UIStatusBar?【英文标题】:How to completely remove UIStatusBar in iOS Application? 【发布时间】:2014-05-08 21:52:45 【问题描述】:我可以隐藏状态栏,但应用程序仍然尊重状态栏的高度(见下图)。我还需要确保在初始加载时状态栏没有“闪烁”,因为它会按下导航菜单按钮并在隐藏时跳回。
我尝试过的方法:
在我的主控制器中添加了以下内容。这会在初始加载时闪烁布局。
// hide the status bar
ionic.Platform.fullScreen();
在 info.plist 中设置键、值对
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
相当于:
Status bar is initially hidden = YES
View controller-based status bar appearance = NO
尝试使用 StatusBar plugin 加载:
.run(function($ionicPlatform)
$ionicPlatform.ready(function()
// Hide the status bar
if(window.StatusBar)
StatusBar.hide();
);
)
尝试在我的 MainViewController.m 中设置以下内容
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
并添加新方法
- (BOOL)prefersStatusBarHidden
return YES;
我在 github 上尝试了大约 3 个不同的 cordova 插件。
我也是一名网络开发人员,所以在提供涉及更改 obj-c 的答案时,请像我 5 岁一样解释:
http://forum.ionicframework.com/t/how-to-hide-uistatusbar/4025
谢谢!
【问题讨论】:
【参考方案1】:我在你的帖子上给你留下了评论,但这是我想出的解决方案。
你可以做的是安装闪屏插件
$ cordova plugin add org.apache.cordova.splashscreen
然后在您的 .run 函数中执行此操作
.run(function ($ionicPlatform, $timeout)
$ionicPlatform.ready(function ()
// Hide the status bar
if (window.StatusBar)
StatusBar.hide();
$timeout(function ()
window.navigator.splashscreen.hide();
, 2500);
);
)
【讨论】:
现在正在执行一个实现,我加载了两个状态栏插件。想知道这是否是问题的一部分。 可能是,我知道 cordova 的插件仓库中有 to 引起了一些混乱。 我应该可以在我的控制台中访问 window.StatusBar 吗?即使安装了插件,我也没有得到任何回报。虽然 window.statusbar 返回一个 Object BarProp visible: true 现在应该可以通过StatusBar
获得window.StatusBar
我安装了启动画面插件并确保我可以访问状态栏,状态栏消失了,但空间仍然存在。和我上面的截图一样。【参考方案2】:
尝试在您的视图控制器中实现 prefersStatusBarHidden。例如
- (BOOL)prefersStatusBarHidden
return YES;
【讨论】:
这给了我与上图相同的结果。我需要那个粉红色的按钮与顶部齐平。由于某种原因,状态栏被隐藏了,但它的边界仍然受到尊重。我什至尝试过绝对定位左上角的粉色按钮,这在我的本地主机上不是问题,只是在模拟器中。【参考方案3】:对于ios 7中每个视图的写法:
- (BOOL)prefersStatusBarHidden
return YES;
对于 ios 6,在 homeview 或 appdelegate 中写入一次
[UIApplication sharedApplication].statusBarHidden = YES;
【讨论】:
【参考方案4】:在'CDVViewController.m'
,转到
- (void)viewDidLoad
并在下面插入
[[UIApplication sharedApplication] setStatusBarHidden:YES];
我的 CDVViewController.m 看起来像这样,
- (void)viewDidLoad
[super viewDidLoad];
NSURL* appURL = nil;
NSString* loadErr = nil;
[[UIApplication sharedApplication] setStatusBarHidden:YES];
.....
【讨论】:
以上是关于如何在 iOS 应用程序中完全删除 UIStatusBar?的主要内容,如果未能解决你的问题,请参考以下文章
如何从设备中完全删除 iOS 应用程序,就好像它从未安装过一样?