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

〖报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 负责人:无 分享
已邀请:
l***@163.com

l***@163.com (作者) - 333

理解 rpxCalcMaxDeviceWidth / rpxCalcBaseDeviceWidth / rpxCalcIncludeWidth 在 Vue3 App 端不受支持。

但我这里还有一个关键问题没有被解释:

如果这是 Vue3 App 端一直存在的功能限制,为什么在 iPadOS 26.4 之前页面显示正常,而升级到 iPadOS 26.4 之后才出现整体缩小?

也就是说:

  • 同一个 uni-app Vue3 App 项目
  • 同一套页面代码
  • 同一个 pages.json
  • 在旧版本 iPadOS 上显示正常
  • 在 iPadOS 26.4 上开始整体缩小

这说明问题不只是“Vue3 不支持 rpxCalc 配置”本身,至少还叠加了 iPadOS 26.4 / App-iOS runtime / WKWebView 渲染行为变化

另外我实测:

  • uni.getSystemInfoSync().windowWidth === 1366
  • uni.upx2px(750) === 1366

但视觉结果仍然明显偏小。

所以我想继续确认两点:

  1. iPadOS 26.4 是否导致了 Vue3 App 端的 rpx 实际渲染基准发生变化?
  2. 官方是否确认这是“系统升级引发的兼容变化”,而不是单纯的“rpxCalc 配置不支持”?

因为如果仅仅是不支持 rpxCalc*,理论上旧系统和新系统的表现应该一致,不应该出现“26.4 之前正常、26.4 之后异常”的变化。

@Ask小助手

  • h***@tupai.tech

    https://ask.dcloud.net.cn/question/219465 你看下我这问题,感觉你这也是rpx 基准问题,官方回复的方式,能解决你的问题吗?

    2026-04-20 12:07

Ask小助手

Ask小助手

未能获取明确的问题分类(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 生成,仅供参考
l***@163.com

l***@163.com (作者) - 333

那为什么26.4之前是正常的? @Ask小助手

l***@163.com

l***@163.com (作者) - 333

@Ask小助手 那为什么相同的设备,26.4之前是正常的,升级到26.4才出这个问题?

h***@tupai.tech

h***@tupai.tech

我有遇到类似问题,和官方回复一致,26.4之前也会缩小,实际是rpx 基准在大于 960px 时,渲染层回退到360px,我采用媒体查询 检测 宽度> 960px 时,放大了页面组件元素,但是在测试阶段发现这个方法在26.4 不生效了,无法拿到官方预期的rpx,出现一定混乱

DCloud_UNI_GSQ

DCloud_UNI_GSQ

问题已确认,参考:https://ask.dcloud.net.cn/question/215260

  • h***@tupai.tech

    我的问题和这个不一样,我是iphone 从26.3 升到 26.4 页面异常缩小,使用的rpx 适配,ipad 上使用媒体查询,手动放大尺寸相关变量值来达到适配效果,在26.3 以下都有效,升级到26.4 后,手机上会异常缩小,看情况媒体查询生效,走到了大屏的样式逻辑。请问有遇到类似问题吗?

    2026-04-17 18:05

  • DCloud_UNI_GSQ

    回复 h***@tupai.tech: 参考:https://ask.dcloud.net.cn/question/215260

    2026-04-20 11:09

  • h***@tupai.tech

    回复 DCloud_UNI_GSQ: 对我的问题,无效

    2026-04-20 15:12

  • s***@baozun.com

    回复 DCloud_UNI_GSQ: 已尝试,无效

    2026-04-20 17:14

  • DCloud_UNI_GSQ

    回复 s***@baozun.com: 你是cli的项目将文件替换到项目的node_modules中而不是HBuilderX的node_modules中

    2026-04-21 11:14

  • DCloud_UNI_GSQ

    回复 h***@tupai.tech: 已在你发的帖子下面回复,后续会继续在你发的帖子下面继续跟进

    2026-04-21 11:19

要回复问题请先登录注册