uni-app 横屏开发遇到的问题

uni-app 横屏开发遇到的问题

类别 信息
产品分类 uniapp/App
PC开发环境 Windows
PC系统版本 win10
HBuilderX 正式
HBuilderX版本 4.23
手机系统 Android
手机系统版本 Android 15
手机厂商 华为
手机机型 华为mate60
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码:

"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8",
"pageOrientation": "landscape"
},

操作步骤:

首次进入app的时候是没问题的 后面退出或者切出桌面 或者关屏一段时间 卡后台了 在进入app样式就会缩小

预期结果:

需要解决这个缩小样式的bug

实际结果:

需要解决这个缩小样式的bug

bug描述:

在pages.json文件设置globalStyle横屏开发 “pageOrientation”: “landscape” 出现的样式问题 在第一次进入app中是不会出现问题的 当退出app 在重新进入app时 页面样式会缩小 会变乱

示例图片

App下载地址或H5网址:

h5:地址 http://tqy.xmxuanxi.top/#/


更多关于uni-app 横屏开发遇到的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

你好,提供一下对比图和 可复现的简单的demo工程

更多关于uni-app 横屏开发遇到的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


一个是正常的 一个是非正常的 就是首次进入app是正常的 后面关闭后台 再次进入app则就样式错乱


这个是操作视频

还能开发游戏,牛波一啊!

uniapp就单独的页面开发 游戏另外写的

http://qy.star-wars.top/qyd.apk这个是简单的demo apk下载路径 测试账号 13923609439 密码12345678

真厉害啊哥,uniapp开发游戏?

uniapp就单独的页面开发 游戏另外写的

华为mate60 触发几率非常高 机会必定触发 其他手机手机小概率触发

你好,这种apk 没法定位具体的问题, 能提供可复现的uniapp demo工程么,可以通过私密附件上传。

在uni-app中进行横屏开发时,可能会遇到一些特定的问题,比如页面布局调整、状态栏适配、屏幕旋转事件处理等。以下是一些针对这些问题的代码案例,帮助你更好地进行横屏开发。

1. 页面布局调整

在横屏模式下,页面的宽度和高度会发生变化,因此需要对布局进行相应的调整。可以使用Flexbox或Grid布局来适应不同的屏幕方向。

<template>
  <view class="container">
    <view class="content">
      <!-- 页面内容 -->
    </view>
  </view>
</template>

<style scoped>
.container {
  display: flex;
  flex-direction: row; /* 横屏时水平布局 */
  justify-content: center;
  align-items: center;
  width: 100vw;
  height: 100vh;
}

.content {
  flex: 1;
  padding: 20px;
  box-sizing: border-box;
}
</style>

2. 状态栏适配

在横屏模式下,状态栏的位置可能会发生变化(比如在屏幕右侧),需要调整页面的padding或margin来适配状态栏。

// 在App.vue的onLaunch或onShow生命周期函数中设置状态栏高度
export default {
  onLaunch() {
    const systemInfo = uni.getSystemInfoSync();
    if (systemInfo.screenOrientation === 'landscape') {
      uni.setNavigationBarStyle({
        titleText: '横屏标题',
        navigationBarTextStyle: 'white',
        navigationBarBackgroundColor: '#000000'
      });
      // 假设状态栏高度为statusBarHeight,可以在页面样式中设置padding-top或margin-top
      const statusBarHeight = systemInfo.statusBarHeight;
      // 可以在全局样式或具体页面样式中使用这个高度值
    }
  }
}

3. 屏幕旋转事件处理

监听屏幕旋转事件,根据旋转后的方向调整页面布局或执行其他操作。

export default {
  onPageScroll(e) {
    // 监听页面滚动事件(可选)
  },
  onLoad() {
    const that = this;
    uni.onWindowResize(function() {
      const systemInfo = uni.getSystemInfoSync();
      if (systemInfo.screenOrientation === 'landscape') {
        // 执行横屏下的布局调整或其他操作
        that.adjustLayoutForLandscape();
      } else {
        // 执行竖屏下的布局调整或其他操作
        that.adjustLayoutForPortrait();
      }
    });
  },
  methods: {
    adjustLayoutForLandscape() {
      // 横屏布局调整逻辑
    },
    adjustLayoutForPortrait() {
      // 竖屏布局调整逻辑
    }
  }
}

以上代码案例展示了如何在uni-app中进行横屏开发时处理页面布局调整、状态栏适配和屏幕旋转事件。根据具体需求,你可以进一步扩展和完善这些代码。

回到顶部