uni-app 使用plus方法切换横屏后 在横屏下随便进入其他页面会导致页面整体放大

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app 使用plus方法切换横屏后 在横屏下随便进入其他页面会导致页面整体放大

操作步骤:

  • 打开下载好的app,首页 > 设备配置 > 切换横竖屏 > 改为横屏,返回首页再进入其他页面,均会造成页面放大

预期结果:

  • 页面不需要放大

实际结果:

  • 页面会造成放大效果

bug描述:

  • 使用plus.screen.lockOrientation(“landscape-primary”);方法切换横屏之后,再次随便进入其他页面会导致页面整体放大
  • 设置了1500毫秒的定时切换也无法解决
  • 网上找了各种方法也无法处理此问题,特来询问官方如何解决
  • 别说什么rpx换px了,全局都要换而且还不能兼容大小屏,我甚至都没敢尝试全局更换px

7 回复

写了个demo,切换恒品没发现变大的问题,可以上传复现的demo


https://www.pgyer.com/cpC3Jv 最新版V1.1.6 打开下载好的app,首页 > 设备配置 > 切换横竖屏 > 改为横屏,返回首页再进入其他页面,均会造成页面放大 麻烦你试试我们线上的APP,这个步骤可以复现,反复进入几次界面就可以看到放大的效果了

是有这个问题,看现象没法定位问题,理论上,反复切换是不会出现内容变大的情况,还是得检查代码

这个是老bug了,只能用骚操作来规避。我之前是做一个空白的跳转中转页,因为似乎跳转的第一个页面会放大,第二个不会。

我是要切换了横屏之后全局横屏哦,你说的方法我试过了,还是会放大

回复 1***@qq.com: 那只能不用rpx了,全部改成 px

在使用 uni-app 开发应用时,如果你通过 plus 方法切换为横屏模式,并且在横屏模式下进入其他页面时出现页面整体放大的问题,这通常是由于页面布局或样式没有正确适配横屏模式导致的。以下是一些可能的解决方案:

1. 检查页面布局和样式

确保你的页面布局和样式能够适配横屏模式。你可以使用 @media 查询来为横屏模式设置特定的样式。

/* 竖屏样式 */
@media screen and (orientation: portrait) {
  /* 竖屏样式 */
}

/* 横屏样式 */
@media screen and (orientation: landscape) {
  /* 横屏样式 */
}

2. 动态调整页面布局

在横屏模式下,你可能需要动态调整页面布局。你可以在 onPageScrollonResize 等生命周期函数中动态调整页面布局。

onPageScroll(e) {
  if (plus.screen.orientation === 'landscape') {
    // 横屏模式下的布局调整
  } else {
    // 竖屏模式下的布局调整
  }
}

3. 使用 uni-apppage-meta 组件

uni-app 提供了 page-meta 组件,可以用来设置页面的元信息,包括页面的缩放比例等。

<page-meta :page-style="pageStyle"></page-meta>
export default {
  data() {
    return {
      pageStyle: 'text-size-adjust: 100%;'
    };
  },
  onLoad() {
    if (plus.screen.orientation === 'landscape') {
      this.pageStyle = 'text-size-adjust: 100%; transform: scale(1);';
    }
  }
};

4. 强制页面不缩放

你可以通过设置 viewportuser-scalable 属性来禁止用户缩放页面。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

5. 使用 uni-appplus.screen API

你可以使用 plus.screen API 来获取屏幕的宽度和高度,并根据屏幕方向动态调整页面布局。

plus.screen.lockOrientation('landscape-primary'); // 锁定横屏
plus.screen.lockOrientation('portrait-primary'); // 锁定竖屏

6. 检查页面缩放比例

确保页面没有因为横屏模式而被放大。你可以通过设置 viewportinitial-scalemaximum-scale 属性来控制页面的缩放比例。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

7. 使用 uni-apponResize 事件

uni-app 中,你可以监听 onResize 事件来动态调整页面布局。

onResize() {
  if (plus.screen.orientation === 'landscape') {
    // 横屏模式下的布局调整
  } else {
    // 竖屏模式下的布局调整
  }
}

8. 使用 uni-apppage 组件

uni-apppage 组件可以用来设置页面的样式和行为。你可以通过 page 组件来设置页面的缩放比例。

<page :style="pageStyle"></page>
export default {
  data() {
    return {
      pageStyle: 'transform: scale(1);'
    };
  },
  onLoad() {
    if (plus.screen.orientation === 'landscape') {
      this.pageStyle = 'transform: scale(1);';
    }
  }
};
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!