我在这里找到了解决白条的方法:
viewport-fit=cover
在视口<meta>
标签上设置,即:
<meta name="viewport" content="initial-scale=1, width=device-width, height=device-height, viewport-fit=cover">
然后,UIWebView中的白条消失:
去除黑色区域解决方案(提供@dpogue在下面留言)是使用LaunchStoryboard图像与cordova-plugin-splashscreen
以取代传统的发射图像,使用科尔多瓦默认。为此,请将以下内容添加到iOS平台config.xml
:
<platform name="ios">
<splash src="res/screen/ios/Default@2x~iphone~anyany.png" />
<splash src="res/screen/ios/Default@2x~iphone~comany.png" />
<splash src="res/screen/ios/Default@2x~iphone~comcom.png" />
<splash src="res/screen/ios/Default@3x~iphone~anyany.png" />
<splash src="res/screen/ios/Default@3x~iphone~anycom.png" />
<splash src="res/screen/ios/Default@3x~iphone~comany.png" />
<splash src="res/screen/ios/Default@2x~ipad~anyany.png" />
<splash src="res/screen/ios/Default@2x~ipad~comany.png" />
<!-- more iOS config... -->
</platform>
然后使用以下尺寸创建图像res/screen/ios
(删除所有现有尺寸):
Default@2x~iphone~anyany.png - 1334x1334
Default@2x~iphone~comany.png - 750x1334
Default@2x~iphone~comcom.png - 1334x750
Default@3x~iphone~anyany.png - 2208x2208
Default@3x~iphone~anycom.png - 2208x1242
Default@3x~iphone~comany.png - 1242x2208
Default@2x~ipad~anyany.png - 2732x2732
Default@2x~ipad~comany.png - 1278x2732
删除黑条之后,iPhone X还要解决另一件事:状态栏由于“缺口”而大于20像素,这意味着Cordova应用最顶端的所有内容都会被它遮盖。 :
您可以使用safe-area-inset-*
iOS 11中的新常量在CSS中自动处理填充内容,而不用对像素填充进行硬编码。
注意:在iOS 11.0中,调用了处理这些常量的函数,constant()
但在iOS 11.2中,Apple将其重命名为env()
(请参见此处),因此,要涵盖这两种情况,您需要同时重载CSS规则并依靠CSS回退机制来应用合适的一个:
body{
padding-top: constant(safe-area-inset-top);
padding-top: env(safe-area-inset-top);
}
然后,结果如预期:应用程序内容覆盖全屏,但不会被“缺口”遮盖:
我创建了一个Cordova测试项目,该项目说明了上述步骤:webview-test.zip
笔记:
页脚按钮
- 如果您的应用程序具有页脚按钮(就像我的一样),则还需要应用
safe-area-inset-bottom
以避免它们与iPhone X上的虚拟主屏幕按钮重叠。
- 就我而言,
<body>
由于页脚是绝对定位的,因此无法将其应用于此,因此我需要将其直接应用于页脚:
.toolbar-footer{
margin-bottom: constant(safe-area-inset-bottom);
margin-bottom: env(safe-area-inset-bottom);
}
科尔多瓦插件状态栏
- 状态栏大小在iPhone X上已更改,因此旧版本的
cordova-plugin-statusbar
显示器在iPhone X上显示不正确
- 迈克·哈丁顿(Mike Hartington)创建了此拉取请求,并应用了必要的更改。
- 该版本已合并到
cordova-plugin-statusbar@2.3.0
发行版中,因此请确保至少使用此版本来应用于安全区域插入
闪屏
设备方向
- 在iOS 11.0上使用UIWebView时,从“纵向”>“横向”>“纵向”旋转会导致
safe-area-inset
不重新应用该样式,从而导致该内容再次被切口遮盖(如jms突出显示)下面的注释中的)。
- 如果应用程序以横向启动,然后旋转为纵向,也会发生
- 通过使用WKWebView时不会发生这种情况
cordova-plugin-wkwebview-engine
。
- 雷达报告:http : //www.openradar.me/radar?id=5035192880201728
- 更新:此问题似乎已在iOS 11.1中修复。
作为参考,这是我打开的原始Cordova问题,其中包含以下内容:https : //issues.apache.org/jira/browse/CB-13273