4***@qq.com
4***@qq.com
  • 发布:2019-11-15 17:34
  • 更新:2020-02-26 15:24
  • 阅读:1876

【报Bug】横竖屏切换后出现布局错乱

分类:uni-app

详细问题描述

用uniapp开发app, 大多数页面是竖屏的,其中有一个页面是横屏的,当切换到横屏以后,退回上一页,用screen.lockOrientation("portrait"),可以切换竖屏,这时侯是没有问题的。如果再back一层,这时也还没有问题,从这一层点回任意一个竖屏的页面,就会出问题,布局完全乱了,

[内容]

重现步骤

[步骤]

  1. 生成a,b,c 3个页面,在manifest.json文件增加
    
    "orientation" : [  
                "portrait-primary",  
                "landscape-primary",  
                "portrait-secondary",  
                "landscape-secondary"  
            ],  

2.在a,b页面的onShow增加以下代码,进行锁屏为竖屏:  

```javascript  
    onShow: function () {  
            plus.screen.unlockOrientation();  
            plus.screen.lockOrientation('portrait-primary');  
            console.log(uni.getSystemInfoSync())  

        },
  1. c页面的onShow增加以下代码,进行锁屏到横屏:
onShow: function () {  
      plus.screen.unlockOrientation();  
      plus.screen.lockOrientation('landscape-primary');  
  },
  1. 运行到ios
  2. 执行一下的操作:
    • a->b->c,现在是横屏
    • c navigateBack to b,现在返回竖屏,布局也没有问题
    • b navigateBack to a 现在还是没有问题
    • a->b 现在布局是乱的,虽然是竖屏但是布局的时候windowWidowWith用的是横屏时候的值,所以布局出来会很大。

[如果语言难以表述清晰,拍一个视频或截图,有图有真相]
请看附件视频

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

[IDE版本号]
2.4.1.20191114

[mac版本号]
10.15 (19A603)

uni-app运行环境说明

[运行端是h5或app或某个小程序?]
运行端是app

[运行端版本号]
ios 12.4.1

[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]
是HBuilderX创建的

[编译模式是老模板模式还是新的自定义组件模式?]
自定义组件模式

App运行环境说明

[Android版本号]
android没有测试

[iOS版本号]
ios 12.4.1

[手机型号]
iphoneX

[模拟器型号]
模拟器没有测试

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

联系方式

[QQ]

2019-11-15 17:34 负责人:无 分享
已邀请:
4***@qq.com

4***@qq.com (作者) - 老程序员

请问如何解决呢?我横屏的是一个web-view套的小游戏,如果这个问题无法解决我的app就整个没法用呀!
有解决方法吗?收费技术支持也可以呀。
已经入坑太深了,很难换其他技术了呀。不然我的这个创业项目就被坑死了呀。

4***@qq.com

4***@qq.com (作者) - 老程序员

我查了以前的bug,有说返回上一页布局还是横屏,这个我是解决的。现在是返回,再返回,然后再向前点击一次。

4***@qq.com

4***@qq.com (作者) - 老程序员

这个问题经过几天摸索,终于勉强爬过这个坑了。欢迎交流

  • 鱼叔子

    你好,请问你怎么解决的

    2019-12-05 08:39

4***@qq.com

4***@qq.com (作者) - 老程序员

我的方法很勉强,就是 不要产生返回-》返回 -》前进这样的情况。 比如返回后,我就redirect到另一个地方

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