uni-app uni.getSystemInfoSync() 每次调用 获取设备高宽 都不一样
uni-app uni.getSystemInfoSync() 每次调用 获取设备高宽 都不一样
信息类别 | 详细信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Mac |
PC开发环境操作系统版本号 | 14.5 (23F79) |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.66 |
手机系统 | iOS |
手机系统版本号 | iOS 18 |
手机厂商 | 苹果 |
手机机型 | iPhone 14 Pro Max |
页面类型 | nvue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
操作步骤:
- 直接调用 uni.getSystemInfoSync()
预期结果:
- 每次都一样的
实际结果:
- 每次都可能不一样
bug描述:
- uni.getSystemInfoSync() 调用 返回的 screenHeight, screenWidth, windowHeight, windowWidth 属性每次都不一样
更多关于uni-app uni.getSystemInfoSync() 每次调用 获取设备高宽 都不一样的实战教程也可以访问 https://www.itying.com/category-93-b0.html
使用你给的复现环境测试并没有复现你说的问题,麻烦发个可复现demo
更多关于uni-app uni.getSystemInfoSync() 每次调用 获取设备高宽 都不一样的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我拿基座 运行一个空的项目 的确没有复现 请问是有方法修改了 uni.getSystemInfoSync() 这个的返回值吗? 我之前提过的zip就是打印的返回值
没有方法修改 uni.getSystemInfoSync()的返回值,这个是通过 https://www.html5plus.org/doc/zh_cn/device.html#plus.device.DeviceInfo api 来获取的屏幕宽高
我找到了问题 一个第三方SDK 我只要使用过后 就会把 getSystemInfoSync 返回的宽高 给修改了 请问我还能用API 给恢复吗 ?现在这个第三方SDK 又不能去掉 还联系不到作者
这个不太清楚这个sdk做了什么影响到你了,一般这类的接口都是get类型的,没有set类型的;要不你试试其他的可获取宽高的api,getWindowInfo
getWindowInfo 也被影响了 输出的高宽 和 getSystemInfoSync 一样被修改过的
那你先尝试联系一下sdk的作者吧
你试试 ios18 以上的版本 的确获取的和宽高有误差
这是相关解释
在uni-app中,uni.getSystemInfoSync()
获取的设备尺寸信息不一致的问题,通常与iOS设备的动态特性有关:
-
状态栏高度变化:iOS设备的状态栏高度在不同场景下会变化(如有无通知、通话状态等),这会影响到
windowHeight
的值。 -
安全区域变化:iPhone 14 Pro Max等全面屏设备,横竖屏切换或应用内嵌WebView时,安全区域(safeArea)会动态调整,导致
windowWidth/windowHeight
变化。 -
屏幕旋转监听:即使锁定竖屏,某些系统事件仍可能触发临时尺寸变化。建议在
onShow
生命周期获取一次并缓存:
let systemInfo = null;
export default {
onShow() {
systemInfo = uni.getSystemInfoSync();
console.log('缓存设备信息:', systemInfo);
}
}