h***@163.com
h***@163.com
  • 发布:2021-03-01 15:40
  • 更新:2021-08-02 10:10
  • 阅读:563

【报Bug】横屏APP设置单页竖屏 样式错乱

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10 企业版 17763.914

HBuilderX类型: 正式

HBuilderX版本号: 3.1.2

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: 华为平板M6

页面类型: vue

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:

C页竖屏写法为

onShow(){  
    plus.screen.lockOrientation('portrait-primary');//强制竖屏  
},  
onUnload() {  
    plus.screen.lockOrientation('landscape-primary');//强制横屏  
}

预期结果:
onShow(){  
    plus.screen.lockOrientation('portrait-primary');//强制竖屏  
},  
onUnload() {  
    plus.screen.lockOrientation('landscape-primary');//强制横屏  
}

实际结果:

第二次加载 横屏样式错乱

bug描述:

APP为平板定制应用 大部分页面横屏 只有一页是竖屏

app.vue

onLaunch: function() {  
    plus.screen.lockOrientation('landscape-primary'); //强制横屏  
},

A页[横屏]正常 => B页[横屏]正常 => C页[竖屏]正常

返回 C页[竖屏]正常 => B页[横屏]正常 => A页[横屏]正常 再次进入 => B页[横屏]样式错乱

返回页面样式正常 第二次加载就样式错乱 第三次加载则正常

C页竖屏写法为

onShow(){  
    plus.screen.lockOrientation('portrait-primary');//强制竖屏  
},  
onUnload() {  
    plus.screen.lockOrientation('landscape-primary');//强制横屏  
}
2021-03-01 15:40 负责人:无 分享
已邀请:
lcvsp

lcvsp

顶一下 官方 还没解决吗

  • zzssd

    onShow(){


    setTimeout(()=>{


    // 为什么要延迟横屏,再加载weView呢?


    // 那是因为,uni-app转安卓有个很严重的bug。这个单个页面需要强制横屏,在onLoad,onReady,onShow阶段横屏都会导致它之前或者之后的页面产生布局异常(无解)


    // 所以必须延迟等这个页面所有东西加载完成了,再设置横屏。所以设置了延迟800毫秒再横屏。


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


    // 但是wb-view也需要在加载资源的时候获取横屏的宽高来进行布局。所以为了获取到的是横屏后的宽高,也要在横屏后再渲染web-view


    this.canStartWeb = true


    },1000)


    },

    2021-12-06 14:43

霍霍

霍霍

没有人给解决吗?

该问题目前已经被锁定, 无法添加新回复