uni-app uni.getSystemInfoSync()在ios端几率性获取宽高参数错误
uni-app uni.getSystemInfoSync()在ios端几率性获取宽高参数错误
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 11 | HBuilderX |
产品分类:uniapp/H5
浏览器平台:微信内置浏览器
浏览器版本:最新内核版本
示例代码:
var systemInfo= uni.getSystemInfoSync() 直接打印几率性出现这个问题
并且uni.onWindowResize这个api有一个百分百复现的bug,返回的deviceOrientation字段百分百是反序的,然后size里面宽高也全部异常
### 操作步骤:
横屏进入项目时
预期结果:
返回参数正常
### 实际结果:
参数返回异常,并且uni.onWindowResize获取的宽高是否横屏也是异常错误的
bug描述:
截图参数是通过uni.getSystemInfoSync()获取的,很明显宽高字段出现了问题,手机处于横屏状态
更多关于uni-app uni.getSystemInfoSync()在ios端几率性获取宽高参数错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我看产品分类是 h5 ,我使用下面代码运行 vue3+ HBuilderX alpha 运行到 chrome,切换屏幕方向表现正常。你提供一个复现工程,并明确操作步骤吧。
<template>
<view>123</view>
</template>
更多关于uni-app uni.getSystemInfoSync()在ios端几率性获取宽高参数错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html
v2去微信浏览器试试,进入项目快速横屏手机纪律性能遇见,然后onWindowResize是百分百有问题的
快速横竖屏旋转手机几率大的很


感觉是ios端并且微信浏览器才有这个问题
这是一个已知的uni-app在iOS端的系统信息获取问题,主要涉及横屏模式下的宽高参数异常。以下是关键点分析:
-
getSystemInfoSync()在iOS横屏时确实可能出现宽高值未及时更新的情况,这是系统级延迟导致的。
-
onWindowResize的deviceOrientation反序问题已确认是微信浏览器内核的bug,建议暂时通过手动校正处理:
const correctOrientation = res.deviceOrientation === 'portrait' ? 'landscape' : 'portrait'
- 临时解决方案:
- 对于宽高问题,可通过window.innerWidth/innerHeight获取实时值
- 或使用setTimeout延迟100ms再获取系统信息
- 官方已将该问题列入修复计划,建议关注uni-app更新日志。当前可通过条件编译区分iOS平台特殊处理:
// #ifdef H5
if(uni.getSystemInfoSync().platform === 'ios'){
// iOS特殊处理
}
// #endif