l***@foxmail.com
l***@foxmail.com
  • 发布:2024-12-18 18:04
  • 更新:2024-12-18 19:36
  • 阅读:29

【报Bug】uni-app 4.36 运行到鸿蒙真机,windowHeight 计算错误

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 14.6.1 (23G93)

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS NEXT Developer Beta2

手机厂商: 华为

手机机型: Mate70

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: CLI

CLI版本号: 3.0.0-4030620241128001

示例代码:

上一个页面没有顶部导航栏,用组件 uni-nav-bar 作为替代。进入下级页面,有顶部导航栏的情况下,在页面 onReady 的时候调用 uni.getSystemInfo, 使用 HBuilderX 4.36 运行到鸿蒙真机基座,打印一下系统相关的信息

  uni.getSystemInfo({  
    success: (res) => {  
      console.log(`systeminfo: ${JSON.stringify(res)}`)  
   }  
}

使用 uni.getWindowInfo() 也是一样的

操作步骤:

上一个页面没有顶部导航栏,用组件 uni-nav-bar 作为替代。进入下级页面,有顶部导航栏的情况下,在页面 onReady 的时候调用 uni.getSystemInfo, 打印一下系统相关的信息

  uni.getSystemInfo({  
    success: (res) => {  
      console.log(`systeminfo: ${JSON.stringify(res)}`)  
   }  
}

使用 uni.getWindowInfo() 也是一样的

预期结果:

有顶部导航栏时,windowHeight 不包含顶部导航栏高度

实际结果:
{  
  "appId": "__UNI__XXXXXX",  
  "appLanguage": "zh-Hans-CN",  
  "appName": "XXXXX",  
  "appTheme": "light",  
  "appVersion": "1.0.1022",  
  "appVersionCode": "1001022",  
  "appWgtVersion": "1.0.1022",  
  "uniCompilerVersion": "4.36",  
  "uniCompilerVersionCode": 4.36,  
  "uniRuntimeVersion": "4.33",  
  "uniRuntimeVersionCode": 4.33,  
  "uniPlatform": "app",  
  "deviceBrand": "huawei",  
  "deviceId": "xxx",  
  "deviceModel": "CLS-AL00",  
  "deviceOrientation": "portrait",  
  "devicePixelRatio": 3.25,  
  "deviceType": "phone",  
  "osLanguage": "zh-Hans",  
  "osTheme": "light",  
  "osVersion": "5.0.1.110",  
  "osName": "harmonyos",  
  "romName": "",  
  "romVersion": "5.0.0",  
  "system": "OpenHarmony-5.0.1.110",  
  "pixelRatio": 3.25,  
  "safeArea": {  
    "top": 33,  
    "bottom": 799,  
    "left": 0,  
    "right": 374,  
    "width": 374,  
    "height": 766  
  },  
  "safeAreaInsets": { "top": 33, "bottom": 0, "left": 0, "right": 0 },  
  "screenHeight": 827,  
  "screenWidth": 374,  
  "statusBarHeight": 33,  
  "windowBottom": 0,  
  "windowHeight": 799,  
  "windowTop": 0,  
  "windowWidth": 374,  
  "SDKVersion": "",  
  "browserName": "",  
  "browserVersion": "",  
  "ua": "",  
  "language": "zh-Hans-CN",  
  "brand": "HUAWEI",  
  "model": "",  
  "platform": "harmonyos",  
  "uniCompileVersion": "4.36",  
  "uniCompileVersionCode": 4.36,  
  "version": "",  
  "errMsg": "getSystemInfo:ok",  
  "errSubject": "getSystemInfo"  
}

可以看到 screenHeight = 827, statusBarHeight = 33, windowHeight = 799, 很明显 windowHeight 已经包含了顶部导航栏的高度了。

bug描述:

通过 uni.getSystemInfo() 获取到的 windowHeight 值不对,uni 官方文档 中提到:

屏幕高度 = 原生NavigationBar高度(含状态栏高度)+ 可使用窗口高度 + 原生TabBar高度  

windowHeight不包含NavigationBar和TabBar的高度

但实际上在鸿蒙 next 系统上,如果上个页面没有顶部导航栏,下个页面有顶部导航栏,在下个页面获取 windowHeight 的时候,包含了顶部导航栏的高度。

2024-12-18 18:04 负责人:无 分享
已邀请:
DCloud_UNI_yuhe

DCloud_UNI_yuhe

感谢反馈,确认 onready 中执行 getWindowInfo 有问题

要回复问题请先登录注册