l***@163.com
l***@163.com
  • 发布:2026-04-05 14:03
  • 更新:2026-04-05 14:05
  • 阅读:20

〖报Bug〗〖HBuilderX 5.06〗uni-app Vue3 App iOS/iPadOS 26.4 横屏下页面整体缩小,pages.json 的 rpxCalc 配置表现异常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

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

HBuilderX类型: 正式

HBuilderX版本号: 5.06

手机系统: iOS

手机系统版本号: iOS 26

手机厂商: 苹果

手机机型: iPad Pro (12.9-inch) (4th generation)

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:
  1. 创建或打开一个 uni-app Vue3 项目,目标平台为 App-plus
  2. pages.jsonglobalStyle 中配置:
    • pageOrientation: "landscape"
    • rpxCalcMaxDeviceWidth
    • rpxCalcBaseDeviceWidth
    • rpxCalcIncludeWidth
  3. 使用 HBuilderX 5.06 打包安装到 iPad Pro (12.9-inch) (4th generation),系统版本 iPadOS 26.4
  4. 打开应用任意页面,观察整体显示比例

补充实验:

  1. rpxCalcMaxDeviceWidth 调整到 >= 1024
  2. 页面始终偏小,rpxCalcBaseDeviceWidth 基本无影响
  3. rpxCalcMaxDeviceWidth 调整到 <= 1023
  4. 再调整 rpxCalcBaseDeviceWidth
  5. 可观察到页面比例开始随 rpxCalcBaseDeviceWidth 明显变化

预期结果:

横屏 iPad 下页面比例正常,rpx 按横屏宽度正确渲染,不会出现整体缩小。

实际结果:

在 iPadOS 26.4 横屏设备上,页面整体明显缩小,字体、间距、卡片、输入框等都同比例偏小。

bug描述:

uni-app Vue3 App-plus 在 iPadOS 26.4 横屏下页面整体缩小,不是局部样式错乱,而是字体、间距、卡片、输入框等整体同比例偏小,疑似 rpx 渲染基准异常。

同一套代码在 Android pad 和其他环境下显示正常。

已排查到:

  • uni.getSystemInfoSync() / uni.getWindowInfo() 返回的横屏宽度为 1366
  • uni.upx2px(750) 结果也是 1366
  • 但页面实际视觉效果仍然明显偏小
  • pages.json 中的 rpxCalcMaxDeviceWidth / rpxCalcBaseDeviceWidth / rpxCalcIncludeWidth 已确认编译进入产物 app-config-service.js

另外我对 rpxCalcMaxDeviceWidthrpxCalcBaseDeviceWidth 做了实验,发现:

  • rpxCalcMaxDeviceWidth >= 1024 时:

    • 页面始终偏小
    • rpxCalcBaseDeviceWidth 基本看不出影响
  • rpxCalcMaxDeviceWidth <= 1023 时:

    • rpxCalcBaseDeviceWidth 开始明显影响页面比例
    • rpxCalcBaseDeviceWidth = 1366 时视觉比例接近正常
    • rpxCalcBaseDeviceWidth = 1024 时效果与“偏小”状态几乎一致

这看起来像是:

  • 某些 iPadOS 26.4 横屏设备在 App-iOS runtime 中,rpx 实际渲染更接近短边 1024
  • 但 JS 侧 uni.upx2px(750) 又返回 1366
  • 即 JS 换算和实际渲染效果可能不一致,或者 rpxCalc* 在 Vue3 App 端表现不符合预期
2026-04-05 14:03 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

未能获取明确的问题分类(uniapp,uni-app x,unicloud,HbuilderX)请明确说明问题采用的技术,补充相关的信息有助于更好的解决问题

感谢您的详细反馈。经过对问题的评审和分析,这是一个非常高质量的技术反馈,但在技术层面属于使用场景与功能支持范围不匹配的情况,而非平台Bug。

反馈质量评价

优点:

  • 问题描述详实,提供了具体的环境参数(iPad Pro 12.9-inch、iPadOS 26.4、HBuilderX 5.06)
  • 实验设计严谨,通过控制变量(调整rpxCalcMaxDeviceWidthrpxCalcBaseDeviceWidth)验证了现象边界(1024阈值)
  • 数据支撑充分,提供了uni.getSystemInfoSync()uni.upx2px(750)的返回值对比

需补充的信息:

  • 建议补充pages.json中具体的rpxCalc配置代码片段
  • 建议确认是否使用了uni-app-x(UTS)模式,还是普通的uni-app Vue3项目

技术评审结论

该现象不属于Bug,而是功能限制导致的预期行为。

根据 pages.json全局样式文档 的明确说明:

rpxCalcMaxDeviceWidthrpxCalcBaseDeviceWidthrpxCalcIncludeWidth 这三个属性支持的平台是:App(vue2 且不含 nvue)、H5(2.8.12+)

您的项目使用的是Vue3,而上述rpx计算配置仅支持Vue2的App端。在Vue3环境下,这些配置项不会被运行时识别和处理,因此您观察到的"配置无效"或"表现异常"实际上是Vue3下的默认rpx行为(即按标准750rpx基准计算,超出特定宽度后可能产生缩放)。

解释您观察到的实验现象

  1. 为什么rpxCalcMaxDeviceWidth >= 1024时页面偏小?
    在Vue3中,rpx计算可能回退到默认逻辑(类似H5或特定平板的默认缩放策略),导致1366px宽度的iPad Pro按较窄基准(如1024或375)计算,产生视觉上的整体缩小。

  2. 为什么uni.upx2px(750)返回1366?
    这表明JS侧的换算逻辑确实获取到了正确的屏幕宽度(1366px),但由于rpxCalc*配置在Vue3 App端不生效,实际渲染层可能使用了不同的计算基准(如按短边1024计算或启用了某种兼容模式),导致JS计算与渲染结果不一致。

建议解决方案

由于Vue3 App端暂不支持rpxCalc*系列配置,针对iPad Pro横屏大屏适配,建议采用以下替代方案:

  1. 使用CSS媒体查询:针对1366px等大屏宽度,使用@media查询调整根元素字体大小或关键容器宽度
  2. 动态计算缩放比:在App.vueonLaunch中根据uni.getSystemInfoSync().windowWidth计算缩放比例,通过CSS变量注入到页面根元素
  3. 使用px单位:对于需要严格保持物理尺寸的元素,直接使用px而非rpx
  4. 考虑使用uni-app-x:如果项目允许迁移,uni-app-x对大屏适配有更好的原生支持

如您确认需要在Vue3中支持rpxCalc*配置,建议前往 插件市场 搜索"rpx"或"适配"相关插件,或在DCloud社区提交需求建议,我们会评估在后续版本中扩展该功能对Vue3的支持。

感谢您的专业反馈,这种详实的测试数据对我们评估功能兼容性非常有价值。

内容为 AI 生成,仅供参考

要回复问题请先登录注册