uni-app 使用plus方法切换横屏后 在横屏下随便进入其他页面会导致页面整体放大
uni-app 使用plus方法切换横屏后 在横屏下随便进入其他页面会导致页面整体放大
操作步骤:
- 打开下载好的app,首页 > 设备配置 > 切换横竖屏 > 改为横屏,返回首页再进入其他页面,均会造成页面放大
预期结果:
- 页面不需要放大
实际结果:
- 页面会造成放大效果
bug描述:
- 使用plus.screen.lockOrientation(“landscape-primary”);方法切换横屏之后,再次随便进入其他页面会导致页面整体放大
- 设置了1500毫秒的定时切换也无法解决
- 网上找了各种方法也无法处理此问题,特来询问官方如何解决
- 别说什么rpx换px了,全局都要换而且还不能兼容大小屏,我甚至都没敢尝试全局更换px
写了个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. 动态调整页面布局
在横屏模式下,你可能需要动态调整页面布局。你可以在 onPageScroll
或 onResize
等生命周期函数中动态调整页面布局。
onPageScroll(e) {
if (plus.screen.orientation === 'landscape') {
// 横屏模式下的布局调整
} else {
// 竖屏模式下的布局调整
}
}
3. 使用 uni-app
的 page-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. 强制页面不缩放
你可以通过设置 viewport
的 user-scalable
属性来禁止用户缩放页面。
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
5. 使用 uni-app
的 plus.screen
API
你可以使用 plus.screen
API 来获取屏幕的宽度和高度,并根据屏幕方向动态调整页面布局。
plus.screen.lockOrientation('landscape-primary'); // 锁定横屏
plus.screen.lockOrientation('portrait-primary'); // 锁定竖屏
6. 检查页面缩放比例
确保页面没有因为横屏模式而被放大。你可以通过设置 viewport
的 initial-scale
和 maximum-scale
属性来控制页面的缩放比例。
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
7. 使用 uni-app
的 onResize
事件
在 uni-app
中,你可以监听 onResize
事件来动态调整页面布局。
onResize() {
if (plus.screen.orientation === 'landscape') {
// 横屏模式下的布局调整
} else {
// 竖屏模式下的布局调整
}
}
8. 使用 uni-app
的 page
组件
uni-app
的 page
组件可以用来设置页面的样式和行为。你可以通过 page
组件来设置页面的缩放比例。
<page :style="pageStyle"></page>
export default {
data() {
return {
pageStyle: 'transform: scale(1);'
};
},
onLoad() {
if (plus.screen.orientation === 'landscape') {
this.pageStyle = 'transform: scale(1);';
}
}
};