DCloud_UNI_GSQ
DCloud_UNI_GSQ
  • 发布:2019-01-29 16:14
  • 更新:2024-10-07 12:27
  • 阅读:131079

uni-app 全面屏、刘海屏适配(iphoneX适配)及安全区设置

分类:uni-app

方案一:使用原生占位(仅App端支持)

manifest.json 文件 app-plus 节点下配下 safearea

"safearea": {  
    "background": "#CCCCCC",  
    "bottom": {  
        "offset": "auto"  
    }  
}

方案二:不使用原生占位(非App端可以不配置manifest)

manifest.json 文件 app-plus 节点下配下 safearea

"safearea": {  
    "bottom": {  
        "offset": "none"  
    }  
}

然后在需要适配的页面内使用 css 常量 constant(safe-area-inset-bottom)、env(safe-area-inset-bottom) 来适配,参考:为iPhoneX设计网站。微信小程序模拟器不支持,以真机为准。

比如为列表底部添加内边距避开安全区,在 iPhoneX 上列表底部会有内边距,在其他设备上没有内边距:

<style>  
.list {  
  padding-bottom: 0;  
  padding-bottom: constant(safe-area-inset-bottom);  
  padding-bottom: env(safe-area-inset-bottom);  
}  
</style>

nvue 页面不支持 css 常量,可以使用 uni.getSystemInfo 获取 safeAreaInsets 动态设置到 style 属性。

注意:使用了pages.json里的原生tabbar,不管manifest里安全区设置如何,在tabbar下方都会留出空隙。

判断是否为刘海屏的方法

使用5+ API (plus.navigator.hasNotchInScreen)可查询当前设备是否为刘海屏。
详情参考:https://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.hasNotchInScreen

安卓底部虚拟按键背景色修改方式

使用Native.js修改:

var Color = plus.android.importClass("android.graphics.Color");    
    plus.android.importClass("android.view.Window");    
    var mainActivity = plus.android.runtimeMainActivity();    
    var window_android = mainActivity.getWindow();    
    window_android.setNavigationBarColor(Color.GREEN);  
26 关注 分享
DCloud_IOS_XTY 今天回复我了吗 Trust h***@163.com 3***@qq.com 9***@qq.com wenju 5***@qq.com _1900 aliang888 C1oudust ttrr 1***@qq.com c***@qq.com LunaYJ d***@163.com MooGu 老醒 苏陌 1***@qq.com nininiccc 1***@qq.com 1***@qq.com HRK_01 笔袋App 8***@qq.com

要回复文章请先登录注册

DCloud_UNI_GSQ

DCloud_UNI_GSQ (作者)

回复 1***@qq.com :
什么下面?
2020-03-12 18:39
1***@qq.com

1***@qq.com

回复 DCloud_UNI_GSQ :
固定定位
2020-03-12 10:52
DCloud_UNI_GSQ

DCloud_UNI_GSQ (作者)

回复 1***@qq.com :
什么定位?
2020-03-11 11:23
1***@qq.com

1***@qq.com

为什么我设置了 还没用 底部tabBar遮挡了定位在下面
2020-03-11 11:18
DCloud_UNI_GSQ

DCloud_UNI_GSQ (作者)

回复 2***@qq.com :
方案二
2019-11-11 11:17
2***@qq.com

2***@qq.com

这样app的所有页面的底部都有白条怎么解决大佬
2019-11-08 14:25
5***@qq.com

5***@qq.com

回复 p***@163.com :
你解决了吗,我也出现了该问题
2019-10-12 16:58
DCloud_UNI_GSQ

DCloud_UNI_GSQ (作者)

回复 3***@qq.com :
新版默认webview从uiwebview改为了wkwebview,你的webview是怎么创建的?如果是用plus接口创建的,暂时可以指定以下webview内核类型为uiwebview试试
2019-09-23 17:22
3***@qq.com

3***@qq.com

更新到最新的2.3.x版本以后,原来iOS的webView打开本地网页h5游戏没有问题,现在出现了报错,同样的网页h5如果部署在远程服务器上,远程加载,没有问题。另外就是safeare原来的配置,进入h5游戏页面可以全屏沉浸式状态栏,现在底部的白条去不掉了,底部安全区一直都在
2019-09-23 14:33
DCloud_UNI_GSQ

DCloud_UNI_GSQ (作者)

回复 p***@163.com :
单独发帖说明
2019-09-16 11:53