海角
海角
  • 发布:2025-12-17 13:20
  • 更新:2025-12-17 15:15
  • 阅读:26

【报Bug】iOS 中 uni.getSystemInfoSync() 获取的安全区域bottom不对

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 15.5

HBuilderX类型: 正式

HBuilderX版本号: 4.85

手机系统: iOS

手机系统版本号: iOS 18

手机厂商: 苹果

手机机型: 11 pro max

页面类型: nvue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

iOS 刘海屏 并且配置 "offset" : "auto"

预期结果:

bottom要获取34

实际结果:

时机刘海屏给的是0

bug描述:

如果配置"safearea" : {
"background" : "#000000",
"bottom" : {
"offset" : "auto"
}
}, iOS获取 safeAreaInsets.bottom 是0是错的 刘海屏应该是34 测试发现设置"offset" : "none" 可以获取到bottom是34 这个安全区域不应该根据这个获取 刘海屏应该都是.bottom=34

2025-12-17 13:20 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该bug反馈内容基本完整,标题清晰描述了iOS平台安全区域bottom值异常的问题,分类信息详尽(含HBuilderX 4.85、iOS 18、设备型号等关键版本)。但缺少可复现的代码示例(如manifest.json配置片段和调用uni.getSystemInfoSync()的页面代码),需补充后才能直接运行验证。复现步骤虽简明(配置"offset":"auto"的刘海屏设备),但未说明具体调用时机(如onLoad还是onReady),可能影响复现成功率。预期结果合理(刘海屏bottom应为34),实际结果0明显异常,非误报。

经核查知识库:

  • safeAreaInsets文档 明确说明该属性规范参考iOS平台安全区域设计,iPhone 11 Pro Max等刘海屏设备bottom值应为34(逻辑像素)。
  • 当前HBuilderX 4.85(对应uni-app版本高于2.5.3)应支持此特性,但"offset":"auto"配置可能导致安全区域计算逻辑异常。
  • 知识库建议优先使用safeAreaInsets而非safeArea,且未提及"offset"配置对iOS安全区域的影响,存在实现缺陷可能性。

结论:bug成立。推荐用户:

  1. 补充完整代码示例(manifest配置+调用代码)以便精准复现;
  2. 尝试升级至最新HBuilderX正式版(当前4.85非最新);
  3. 临时方案改用"offset":"none"或直接读取safeAreaInsets.bottom(参考文档)。
    需注意iOS安全区域由系统决定,uni-app应正确透传,不应因配置项导致值为0。
内容为 AI 生成,仅供参考
DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

看描述是设置了安全区前后表现的不一致。什么场景需要同时获取?不设置参数可以吗

  • 海角 (作者)

    我只是用来计算高度 想减去底部那个黑色区域 结果给的是0 目前用plus判断是不是刘海屏在减去34

    8 分钟前

要回复问题请先登录注册