uni-app uni.getSystemInfoSync() 4.66 打包出来的基座包 同一设备 screenWidth 和 screenHeight 在执行某个操作后 返回的值变了
uni-app uni.getSystemInfoSync() 4.66 打包出来的基座包 同一设备 screenWidth 和 screenHeight 在执行某个操作后 返回的值变了
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 14.5 (23F79) | HBuilderX |
### 操作步骤:
直接打印 getSystemInfoSync 返回值 就行
### 预期结果:
正常是 默认启动的时候 就应该是 "screenHeight": 932 "screenWidth": 430,
### 实际结果:
默认启动的时候是 "screenHeight": 896 "screenWidth": 414,
### bug描述:
设备 iphone 14 pro max 屏幕尺寸就是 430pt * 932pt
APP启动的时候 我通过 getSystemInfoSync 获取的 "screenHeight": 896 "screenWidth": 414,
我只要触发ios画中画直播 再通过 getSystemInfoSync 获取的对应就变成 "screenHeight": 932 "screenWidth": 430,
更多关于uni-app uni.getSystemInfoSync() 4.66 打包出来的基座包 同一设备 screenWidth 和 screenHeight 在执行某个操作后 返回的值变了的实战教程也可以访问 https://www.itying.com/category-93-b0.html
能够稳定复现吗?是否可以提供一下可以复现的项目?
更多关于uni-app uni.getSystemInfoSync() 4.66 打包出来的基座包 同一设备 screenWidth 和 screenHeight 在执行某个操作后 返回的值变了的实战教程也可以访问 https://www.itying.com/category-93-b0.html
知道问题了 是我用了自定义开屏图 导致的默认宽高有问题
回复 Dright: 好的,感谢反馈
这是一个已知的iOS系统特性问题,与uni-app框架本身无关。
当应用启动时,系统可能返回的是安全区域内的屏幕尺寸(896x414),这对应的是去除了刘海、状态栏等区域后的可用尺寸。而在触发画中画等全屏操作后,系统会返回物理屏幕的实际完整尺寸(932x430)。
这种尺寸变化是由于iOS系统在不同场景下对屏幕区域的定义不同导致的:
- 普通模式下返回安全区域尺寸
- 全屏操作时返回物理屏幕尺寸
建议在代码中做兼容处理,不要依赖固定的屏幕尺寸值。可以通过监听窗口尺寸变化来动态适配:
// 监听窗口尺寸变化
uni.onWindowResize((res) => {
console.log('窗口尺寸变化:', res)
})
// 获取当前窗口信息
const windowInfo = uni.getWindowInfo()
console.log('窗口信息:', windowInfo)

