1***@qq.com
1***@qq.com
  • 发布:2026-11-02 11:02
  • 更新:2026-11-02 11:04
  • 阅读:50

【报Bug】ios 苹果手机 nvue页面横屏后,样式异常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 5.23

手机系统: iOS

手机系统版本号: iOS 14

手机厂商: 苹果

手机机型: 所有苹果设备

页面类型: nvue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

设置 plus.screen.lockOrientation('landscape-primary')

预期结果:

横屏完整显示

实际结果:

异常显示,半屏是黑屏

bug描述:

苹果手机,nvue页面开发的直播间,设置横屏后,是横向的半屏状态,并且右侧是黑屏,一个月前是没问题的,安卓也没有问题,代码没有变动过,并且一直使用的hbuilderX 5.23版本

2026-11-02 11:02 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

收到你的 bug 反馈,我以官方视角对这条反馈做如下评审和分析:

一、反馈完整性评审

  1. 标题与描述:基本清晰,能看懂核心现象——nvue 页面调用 plus.screen.lockOrientation('landscape-primary') 锁定横屏后,画面只占横向半屏、右侧黑屏,并且说明了“一个月前正常、安卓正常、代码与 HBuilderX 5.23 版本未变动”这些关键背景,这部分写得不错。
  2. 代码示例:目前缺失。你只给了一行 API 调用,不构成可直接运行的示例。请补充:
    • 该 API 的调用时机(onLoad、onReady、按钮触发还是其他交互后调用);
    • 直播间 nvue 页面的最简结构(页面里是否包含 video 等组件);
    • manifest.json 中 screenOrientation 相关的配置片段。
      注意:我无法识别附件,代码请直接以文本形式粘贴在帖子正文中。
  3. 复现步骤:目前只有一句“设置 plus.screen.lockOrientation('landscape-primary')”,官方人员无法据此稳定复现。请补充:
    • 是进入页面即调用,还是操作后调用;调用前页面是否处于竖屏状态,是否先调用过 unlockOrientation;
    • 打包方式是标准基座、自定义基座还是云打包(这一点很关键,社区同类问题中有“重新打包基座后恢复正常”的先例);
    • 机型写“所有苹果设备”过于宽泛,请列出实际测试过的具体机型及各自 iOS 版本(分类里系统版本只写了 iOS 14,若多台设备系统不同请分别注明)。
  4. 预期结果:“横屏完整显示”是合理预期,没有问题。
  5. 实际结果:现象描述基本清楚,建议再补充一句具体表现——是内容只渲染在左侧一半、右侧整块黑,还是页面被压缩/拉伸,便于与历史案例比对。
  6. 分类信息:整体完整(Win11、HBuilderX 5.23 正式版、iOS、Vue3、nvue 页面),主要缺“打包方式”和具体机型明细。

二、问题是否成立的分析

从知识库和社区历史记录看,你描述的现象有多个高度相似的先例,反馈有成立的可能性,但暂未检索到针对“HBuilderX 5.23 + iOS 14 + nvue 横屏半屏黑屏”的官方已知 bug 结论:

官方更新历史中也有相关修复记录可供参照:

  • 3.4.6 更新日志:修复“在页面生命周期 onLoad 方法中调用 lockOrientation 锁定屏幕方向可能引起布局异常的Bug”(App-iOS 平台)——如果你是在 onLoad 中调用,请务必说明;
  • 3.3.3 更新日志:修复“nvue 页面固定横屏启动时 rpx 计算错误的Bug”(App-iOS 平台);
  • 5.14 更新日志:修复“iOS26以上版本横屏 rpx 计算错误的Bug”——你是 iOS 14,此条不适用于你的场景。

需要指出的是:你强调“代码没变、HBuilderX 一直是 5.23、一个月前正常”,这与单纯“版本 bug”的判断存在矛盾点,需要先排除环境因素(期间是否重新打包过、基座是否变化、测试设备系统是否有更新)。

三、排查建议

  1. 确认 lockOrientation 的调用时机,避免在 onLoad 中直接调用(3.4.6 曾修复 onLoad 中调用引起布局异常的 bug),可尝试在 onReady 或适当延迟后调用;
  2. 参照 ask 187789 中的排查方式,先执行 plus.screen.unlockOrientation() 再执行 lockOrientation('landscape-primary'),看现象是否变化;
  3. 检查 manifest.json 中 screenOrientation 是否声明了 landscape-primary、landscape-secondary(参考 ask 155212 中的配置);
  4. 确认并说明打包方式与基座情况:如果近期重新打包过,请说明打包方式是否变化(参考 ask 171727 中重新打包基座后恢复的案例);
  5. 排查项目中是否有重力感应/设备方向监听相关代码(ask 155212 最终定位即为此类代码引起);
  6. 新建一个空白项目,用最简 nvue 页面加同样的 lockOrientation 调用做对照测试:空白项目能复现则说明与框架/基座相关,不能复现则对比项目配置差异,这个对照结果对官方定位非常有价值。

四、请补充的信息

  • lockOrientation 的调用时机与相关页面代码(文本粘贴,勿用附件,我无法识别附件);
  • manifest.json 中 screenOrientation 配置;
  • 打包方式(标准基座/自定义基座/云打包)及“一个月前正常”到“现在异常”之间是否重新打包过;
  • 实际测试过的具体机型与对应 iOS 系统版本列表;
  • 半屏黑屏的具体表现细节。

补充以上信息后继续在本帖跟进,官方人员会根据你提供的最简复现工程和对照测试结果进一步排查确认。

内容为 AI 生成,仅供参考

要回复问题请先登录或注册