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

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

要回复文章请先登录注册

Spring_CTH

Spring_CTH

回复 Spring_CTH :
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8",
"app-plus" : {
"safearea": { //iOS平台的安全区域
"background": "#ffffff",
"backgroundDark": "#2f0508", // HX 3.1.19+支持
"bottom": {
"offset": "auto"
}
}
}
},
2024-10-07 12:27
Spring_CTH

Spring_CTH

苹果设置safearea 压根没生效啊 到底放在哪啊
2024-10-07 12:23
Spring_CTH

Spring_CTH

也没说苹果底部小黑条怎么设置背景啊
2024-10-05 11:06
都广野

都广野

回复 agua666 :
没能解决,改需求了
2024-07-17 10:41
agua666

agua666

回复 都广野 :
你好,这个问题有解决了吗
2024-07-17 10:13
agua666

agua666

回复 李钊 :
你好,这个问题有解决了吗
2024-07-16 22:46
都广野

都广野

回复 井 :
请问一下你最后解决了吗?我现在也是多进几次就崩溃了
2024-05-23 10:19
李钊

李钊

```
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);
```
这个代码会阻塞页面跳转navigateTo
2023-09-09 01:41
IvanJiang123

IvanJiang123

安卓设置了safearea,但无法生效
2023-09-05 15:21
井

回复 petter45 :
安卓这种设置方法如果每个页面动态设置会出现,页面返回再次访问无法打开的问题,这个怎么解决呀?

请问最后你是怎么解决的啊,遇到了同样的问题。
贴子里的安卓代码,在一个页面中执行,多次返回进入页面,就进不去了。
2023-08-11 17:43