AppCan开发经验分享

iPhoneX适配之Hybrid开发

2018-03-28  本文已影响97人  望山观海

Hybrid开发针对iPhoneX的适配之路

2017年9月苹果发布了iPhoneX。它的“新发型-齐刘海”很让程序猿们揪心。如何适配呢?由于AppCan的客户们逐渐的开始遇到iPhoneX适配问题了,那这里就以AppCan平台为例子,记录和分享一下适配过程。

Hybrid开发是指应用内既有原生也有H5页面(本地或在线)。H5页面通常使用系统提供的WebView来呈现。

适配前状况

  1. 打包使用Xcode8,不支持iOS11新特性,也无法支持iPhoneX等新机型;
  2. App运行在iPhoneX上的表现是:系统可能识别到app使用了iOS10的SDK打包,因此自动留下了比普通的安全区更“安全”(更宽)的黑边,极其难看;
  3. 等等。

基本方面适配

  1. AppIcon:(不过这跟iPhoneX适配无关)图标需要加入1024×1024的图标了,要不然上AppStore会被拒;

  2. 启动图:需要加入1125×2436分辨率的针对iPhoneX分辨率的启动图。加入正确分辨率的启动图之后,运行在iPhoneX时,可以看到不会有那种更“安全”(更宽)的黑边了,但是还是有黑边(也不是黑边,其实就是露出了后面的View背景),不是全屏的,而是似乎系统自动将WebView显示的内容放在了正常的安全区域内(即上空44px,下空34px);

WebView适配(以UIWebView为例)

有两种思路,一种是将UIWebView本身放在安全区域内,另一种是UIWebView铺满全屏,H5代码中对安全区进行适配。

UIWebView本身放置在安全区域内

UIWebView铺满全屏,H5进行进行适配

<meta name="viewport" content="...,viewport-fit=cover" />
    //设置webView自带的scrollView,使得view充满屏幕
    if(@available(iOS 11.0, *)){
        [self.scrollView setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];
    }
        .iphonex-compat {
            /* iOS11.0-iOS11.1 */
            padding: constant(safe-area-inset-top) constant(safe-area-inset-right) constant(safe-area-inset-bottom) constant(safe-area-inset-left);
            /* iOS11.2+ */
            padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
        }
padding-left: max(12px, env(safe-area-inset-left));

参考文章

极速适配 iPhone X 秘笈:https://mp.weixin.qq.com/s/sCfNNxiX6v8Ak9JaOwljuw

上一篇下一篇

猜你喜欢

热点阅读