uniapp支持App横竖屏开发总结

一、需求:

app要支持重力感应自动切换横竖屏,并切换后样式不能错乱

二、实现

官方文档
官方Git

manifest.json文件中

复制代码
"app-plus" : {
	"screenOrientation" : [
		 "portrait-primary",
		 "portrait-secondary",
		 "landscape-primary",
		 "landscape-secondary"
	],
}

pages.json文件中

复制代码
"globalStyle": {
		"pageOrientation": "auto"
	},
"app-plus": {
	"screenOrientation": [
		"portrait-primary",     //可选,字符串类型,支持竖屏
		"portrait-secondary",   //可选,字符串类型,支持反向竖屏
		"landscape-primary",    //可选,字符串类型,支持横屏
		"landscape-secondary"   //可选,字符串类型,支持反向横屏
	]
},

三、额外补充

3.1 合理性

我感觉这东西官方uniapp应该默认配置里就有,而不应该让程序员再手动添加,因为自动旋转大部分APP都支持,不需要的人手动置为false比较合理

3.2 旋转后的样式问题

旋转后可能出现样式问题或者白屏,导致问题点原因有很多,有一大部分原因是uniapp对涉及安卓原生交互的东西处理的其实并不太好,我这里只列一下我了解到的

①不要使用rpx,使用px,因为页面使用rpx为单位的;如果用的是px为单位就不会;因为rpx是根据屏幕尺寸来计算的,回到首页时候,页面获取到的屏幕尺寸还是横屏的尺寸;如果非要使用rpx,要加定时器实时监控页面尺寸

②不要使用uni.navigateBack()返回,监听页面返回使用uni.redirectTo跳转或uni.switchTab,如果直接跳回想要跳转的页面还是出现样式问题,可以尝试先跳转一个空白页面,在空白页面跳转至想要跳回的页面就好了

3.2 如果你要强制APP所有页面都是横屏:

pages.json

复制代码
"globalStyle": {
	"pageOrientation": "landscape",
}

manifest.json

复制代码
"distribute" : {
	"orientation" : [ "portrait-primary" ]
},

3.3 如何在页面里手动旋转页面(单独让某个页面支持旋转)

复制代码
export default {
  mounted() {
    // 监听屏幕方向变化
    window.addEventListener('orientationchange', this.handleOrientationChange)
  },
  destroyed() {
    // 移除屏幕方向变化的监听
    window.removeEventListener('orientationchange', this.handleOrientationChange)
  },
  methods: {
    handleOrientationChange() {
      // 横屏
      if (window.orientation === 90 || window.orientation === -90) {
        this.lockOrientation('landscape')
      }
      // 竖屏
      else {
        this.lockOrientation('portrait')
      }
    },
    lockOrientation(orientation) {
      if (typeof plus !== 'undefined' && typeof plus.screen !== 'undefined') {
        plus.screen.lockOrientation(orientation)
      }
    }
  }
}
相关推荐
2501_9159090617 小时前
全面解析前端开发中常用的浏览器调试工具及其使用场景
android·ios·小程序·https·uni-app·iphone·webview
wuxianda103017 小时前
uniapp项目上架苹果商店4.3a被拒,3天极速解决方案2026.5.8
前端·人工智能·flutter·uni-app·ios上架·苹果上架·苹果4.3a
小盼江1 天前
Uniapp小程序鲜花商城推荐系统 买家卖家双端(web+uniapp)
前端·小程序·uni-app
fakaifa1 天前
【最新版】CRMEB Pro版v4.0系统源码 全开源+uniapp/PC前端+搭建教程
uni-app·开源·商城小程序·crmeb·crmebpro
小徐_23332 天前
Wot UI v1 升级 v2?这份迁移指南帮你少踩坑!
前端·微信小程序·uni-app
游戏开发爱好者82 天前
使用Fiddler设置HTTPS抓包诊断Power Query网络问题
android·ios·小程序·https·uni-app·iphone·webview
棋宣2 天前
uni-app编译到微信小程序中,父传子props首次传递数据不接收的bug
微信小程序·uni-app·bug
阳光先做3 天前
uniapp打包鸿蒙安装包问题
uni-app
码海扬帆:前端探索之旅3 天前
深度定制 uni-combox:新增功能详解与实战指南
前端·vue.js·uni-app
计算机学姐4 天前
基于微信小程序的图书馆座位预约系统【uniapp+springboot+vue】
vue.js·spring boot·微信小程序·小程序·java-ee·uni-app·intellij-idea