iOS 8:Web应用程序状态栏位置和调整大小问题

aLi*_*eAd 39 html mobile ios ios8

设置元标记时

apple-mobile-web-app-capable
Run Code Online (Sandbox Code Playgroud)


apple-mobile-web-app-status-bar-style
Run Code Online (Sandbox Code Playgroud)

要创建一个全屏Web应用程序,iOS状态栏位于屏幕顶部(半透明),底部还有一个额外的空黑条.

这是我的代码:

<!DOCTYPE html><html><head><meta charset="utf-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
</head>
<body><h1>Test</h1>
<p>Capture a photo using camera</p>
<input type="file" capture="camera" accept="image/*">
</body></html>
Run Code Online (Sandbox Code Playgroud)

标签还有一个问题apple-mobile-web-app-status-bar-style.通过相机输入并接受照片后,屏幕两侧会出现黑条.我在iPad3上使用iOS8 GM.

我认为这可能是一个iOS 8的bug,但Apple似乎并不关心我的bug报告:(

有谁知道这个问题的解决方案/解决方法?

更新1: Apple在9月19日将我的错误报告标记为重复(已关闭).

更新2: 在iOS 8.3 Beta 1中修复了错误

cap*_*lam 35

从技术上讲,这不是你的问题的答案,但我一直在记录我的发现,同时试图自己解决这个问题,这是我迄今为止发现的.我打算发布它作为自己的问题,但认为它将作为副本关闭.

在运行固定Web应用程序的iOS8设备上.关于标签:

<meta name="apple-mobile-web-app-status-bar-style" content="black">
Run Code Online (Sandbox Code Playgroud)

来自Apple开发人员参考:

如果内容设置为默认值,则状态栏显示正常.如果设置为黑色,则状态栏为黑色背景.如果设置为黑色半透明,则状态栏为黑色且半透明.如果设置为默认值或黑色,则Web内容将显示在状态栏下方.如果设置为黑色半透明,则Web内容将显示在整个屏幕上,状态栏会部分遮盖.默认值为default.

要启用此功能,您需要使用

<meta name="apple-mobile-web-app-capable" content="yes">
Run Code Online (Sandbox Code Playgroud)

在iOS6和7中,这或多或少地按预期工作.

在iOS8中,这似乎完全被打破了.例如,在iPad Air上纵向运行的iOS 8.0.2具有以下行为:

  • black结果是透明的背景.屏幕底部有一个坚固的黑色条
  • default或者不设置值会导致透明背景和屏幕底部的实心白条
  • black-translucent 导致透明背景,但屏幕底部没有恼人的条纹

在所有情况下,内容都显示在栏的"下方".即酒吧不会推倒内容.

在iPhone6上,状态栏根本不显示在横向上.但是在纵向中,出现以下行为:

  • black 按预期工作,内容被推下(哇!!!)
  • default 顶部有一个空白条
  • black-translucent 导致透明背景,内容在下面

我没有机会在iPhone6 +上进行测试

xcode中的iOS模拟器似乎无法可靠地再现真实设备上发生的行为.

我试过用javascript动态更改它,但似乎没有效果.

只是为了使这更有趣/令人沮丧,你可以通过在html元素上设置样式来覆盖状态栏(时钟/ wifi等).例如

  html {background: black;}
  body {background: #DDD; margin-top: 20px}
Run Code Online (Sandbox Code Playgroud)

其他地方记录的问题相同:

  • 这真让我抓狂. (2认同)

小智 7

自iOS6以来就存在这个问题.我之前发布过Apple的错误报告,其中包含您今天提供的所有详细信息,后来被标记为重复.这是2年前,不幸的是今天我发现它甚至更糟.

原始错误报告的ID为11966202,仍然是(打开).既然你有同样的问题,你唯一能做的就是确认会升级它的bug,并且将来会修复它.

正如我所说,我正在寻找一个足够的解决方案来告诉你没有解决方法.该问题可以在所有iOS设备上重现,但根据屏幕大小和方向的不同表现.

在iOS 8中,我们现在遇到一个小故障,其中视口只是屏幕的一小部分,它完全关闭/崩溃.

编辑:Apple Ticket现已关闭

截至周一,Apple已经关闭了机票,我可以确认使用8.1最终解决了相机和状态栏问题.希望它也能解决你的问题:)

  • 我注意到,当您在横向模式下打开WebClip时,您会在屏幕底部获得额外的20px空白,并且根本无法填充.Apple在最新版本的iOS中彻底破坏了状态栏的行为. (2认同)
  • 使用iPad mini和iOS 8.1并没有解决这个问题.横向和垂直模式仍然破碎. (2认同)

Dru*_*mer 5

问题来自于使用<meta name="apple-mobile-web-app-status-bar-style" content="black">为了摆脱应用程序底部的黑条,您将需要使用:<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">使用黑色半透明将使您的应用在iOS7和iOS8中保持相同.您仍需要调整应用顶部的任何内容以清除iOS状态栏图标.

  • 此外,我没有提到为了使此解决方案生效,您必须从主屏幕删除您的Web应用程序并重新添加它. (2认同)

aLi*_*eAd 2

苹果在 iOS 8.3 beta 1 中修复了这个错误