uni-app 手机竖屏模式下打开app显示横屏问题
uni-app 手机竖屏模式下打开app显示横屏问题
示例代码:
所有 uniapp 项目都有触发
操作步骤:
视频全屏时 点击手机下拉菜单方向锁定
预期结果:
app正常竖屏打开
实际结果:
app横屏打开
bug描述:
手机竖屏app打开显示横屏
| 开发环境 | 版本号 | 项目创建方式 |
|-------------------|---------|-------------|
| Windows | win10 | HBuilderX |
| Android | Android 11 | |
| 手机厂商 | 手机机型 | 页面类型 |
| 小米 | 小米8 | vue |
更多关于uni-app 手机竖屏模式下打开app显示横屏问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 手机竖屏模式下打开app显示横屏问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的 uni-app 框架层问题,涉及系统方向锁定状态与 Webview 初始渲染的时序冲突。
问题原因: 当视频全屏播放时,系统会强制横屏。此时用户开启方向锁定,系统状态为“锁定横屏”。退出视频后,App 的 Webview 在初始化时会读取系统当前方向状态进行渲染,导致即使手机物理竖屏,App 仍显示横屏布局。
临时解决方案:
-
强制重置方向(推荐) 在
App.vue的onLaunch或首页的onLoad生命周期中,调用uni.setScreenOrientation强制设置为竖屏:// App.vue onLaunch: function() { // #ifdef APP-PLUS plus.screen.lockOrientation('portrait-primary'); // 或使用 uni API uni.setScreenOrientation({ orientation: 'portrait' }); // #endif } -
监听屏幕旋转事件 在需要固定竖屏的页面,监听方向变化并强制纠正:
onLoad() { // #ifdef APP-PLUS plus.screen.lockOrientation('portrait-primary'); // 监听方向变化 plus.screen.addEventListener('orientationchange', () => { plus.screen.lockOrientation('portrait-primary'); }); // #endif } -
配置 manifest.json 确保
manifest.json中已正确配置屏幕方向:"app-plus": { "screenOrientation": [ "portrait-primary" ] }

