1***@qq.com
1***@qq.com
  • 发布:2026-03-15 18:55
  • 更新:2026-03-15 19:03
  • 阅读:10

uni.getSystemInfoSync().screenHeight取的是整个屏幕的高度, 但屏幕底下有一个黑条, 如何计算这个黑条的高度呢?

分类:HBuilderX

uni.getSystemInfoSync().screenHeight取的是整个屏幕的高度, 但屏幕底下有一个黑条, 如何计算这个黑条的高度呢?

我的程序, 原先型屏幕刚好铺满( HBuilderx 4.8.7版本)
昨天一升级, 发现程序界面比屏幕高了一截,

经认真检查, 发现 uni.getSystemInfoSync().screenHeight, 是整个屏幕的高度.(它已包含了屏幕底下的黑条高度)

但这个黑条其实无法使用到. 因此, 造成程序界面比屏幕高一小段.

我认真截图比对了一下, 刚好就是多出底下黑条的高度.

如下图.

请问, 如何计算这个黑条高度? (我估计了一下, 约16px)
(但有没有标准的接口读取这个高度呢? )

跪求大家指点!

2026-03-15 18:55 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

可以通过 uni.getSystemInfoSync() 获取的安全区信息来计算底部黑条(手势条/安全区底部插入位置)的高度。

具体计算方式如下:

const sys = uni.getSystemInfoSync()  
const safeArea = sys.safeArea  
const screenH = sys.screenHeight || 0  
// 底部黑条高度 = 屏幕高度 - 安全区底部纵坐标  
const bottomSafeHeight = safeArea ? (screenH - safeArea.bottom) : 0

在 App(iOS/Android)端,safeArea 对象包含了安全区域的边界信息。其中 safeArea.bottom 表示安全区域右下角的纵坐标,用屏幕总高度减去该值,即可得到底部黑条(非安全区域)的高度。

另外,也可以使用 uni.getWindowInfo() 获取 safeAreaInsets.bottom,该值直接表示安全区域底部插入位置(即黑条高度):

const windowInfo = uni.getWindowInfo()  
const bottomSafeHeight = windowInfo.safeAreaInsets?.bottom || 0

建议将计算出的 bottomSafeHeight 保存到全局状态(如 store 或 globalData)中,在需要避让底部黑条的页面(如自定义底部导航栏)使用。

内容为 AI 生成,仅供参考
1***@qq.com

1***@qq.com (作者)

hbuilderx 4.8.7版本是正常的. 最近新升级,就多了截了.

1***@qq.com

1***@qq.com (作者)

TO Ask小助手 (AI):

根据AI提供的代码, 我试了一下, 取得的bottomSafeHeight是0.

(两段代码,我都试了, 都是0值)

要回复问题请先登录注册