Uniapp_app端使用重力感应实现横屏竖屏自动切换

1、进入页面默认是竖屏当手机横着的时候页面也跟着横着

进入页面开启定时器调用相关api去触发横屏竖屏,主要核心代码都在onShow()里面和onHide()里

<template>
<view class="monitor"><u-no-network></u-no-network><web-view :src="url" v-if="url" :webview-styles="webviewStyles"></web-view>
</view>
</template><script>let watchScheen;import {getProjectHref} from '@/api/api.js'export default {data() {return {url:'',webviewStyles:{progress:{background:'#FF3333',},},}},watch: {projectInfo(newVal,oldVal) {this.init();}},computed:{// 项目详情projectInfo(){return this.$store.state.projectInfo || {}},},onShow() {// 进入web-view页面// unlockOrientation => 解锁// lockOrientation => 锁定// "portrait-primary", //可选,字符串类型,支持竖屏// "portrait-secondary", //可选,字符串类型,支持反向竖屏// "landscape-primary", //可选,字符串类型,支持横屏// "landscape-secondary" //可选,字符串类型,支持反向横屏// #ifdef APP-PLUSplus.screen.unlockOrientation('portrait-primary');/* 5+环境屏幕旋转 */watchScheen = setInterval(()=>{// 屏幕方向数值: HOME键在右, 0 - 竖屏; 90 - 横屏;  HOME'键在左, 180 - 反向竖屏; -90 - 反向横屏;let c = plus.navigator.getOrientation();if(c == 0){console.log('竖屏',c)plus.screen.lockOrientation('portrait-primary'); //锁定竖屏plus.navigator.setStatusBarStyle('dark');plus.screen.unlockOrientation();uni.showTabBar()} else if(c == 180){console.log('反向竖屏',c)plus.screen.lockOrientation('portrait-secondary'); //锁定横屏plus.navigator.setStatusBarStyle('dark');plus.screen.unlockOrientation();uni.hideTabBar()} else if(c == -90){console.log('反向横屏',c)plus.screen.lockOrientation('landscape-secondary'); //锁定反向横屏plus.navigator.setStatusBarStyle('dark');plus.screen.unlockOrientation();uni.hideTabBar()} else {console.log('横屏',c)plus.screen.lockOrientation('landscape-primary'); //锁定反向横屏plus.navigator.setStatusBarStyle('dark');plus.screen.unlockOrientation();uni.hideTabBar()}},200)// #endifuni.setNavigationBarTitle({title:"监控"})this.init()},onHide() {clearInterval(watchScheen)// #ifdef APP-PLUS/* 5+环境锁定屏幕方向 */plus.screen.lockOrientation('portrait-primary'); //锁定// #endif},methods:{init(){uni.showLoading({title:"加载中..."})getProjectHref({projectId:this.projectInfo.id,hyperLinkAddressType :2}).then(res=>{if(res){this.url = this.$u.trim(res.hyperLinkAddress)console.log(this.url);// #ifdef APP-PLUSlet timer = setInterval(()=>{uni.setNavigationBarTitle({title:"监控"})},300)setTimeout(()=>{uni.hideLoading()clearInterval(timer)timer = nullvar currentWebview = this.$mp.page.$getAppWebview() //获取当前页面的webview对象var wv = currentWebview.children()[0]wv.setStyle({scalable:true,})},1000*3)// #endifuni.hideLoading()}else{this.url = ''uni.hideLoading()this.utils.toast("此项目暂未配置超链接")}})}}}
</script><style lang="scss" scoped>iframe {background-color: #111934;}
</style>

2、调用重力感应相关api还要在pages.json中添加如下配置

uniapp文档中screenOrientation地址

"globalStyle": {"backgroundColor": "#F8F8F8","navigationBarBackgroundColor": "#F8F8F8","navigationBarTextStyle": "white", // 状态栏字体为白色,只能为 white-白色,black-黑色 二选一"pageOrientation": "auto" //横屏配置,全局屏幕旋转设置(仅 APP/微信/QQ小程序),支持 auto / portrait / landscape},"app-plus": {"screenOrientation": ["portrait-primary",     //可选,字符串类型,支持竖屏"portrait-secondary",   //可选,字符串类型,支持反向竖屏"landscape-primary",    //可选,字符串类型,支持横屏"landscape-secondary"   //可选,字符串类型,支持反向横屏],"background":"#111934"},

因为我是开发app和小程序一起的所以小程序主要的配置实在page.json里面添加这些属性,如果你开发不涉及到小程序就不用加,只需要加globalStyle中的pageOrientation属性

在这里插入图片描述

3、App端配置找到manifest.json文件找到源码视图添加如下配置

//app-plus->screenOrientation
/* ios横屏配置 */
"screenOrientation" : ["portrait-primary", //可选,字符串类型,支持竖屏"portrait-secondary", //可选,字符串类型,支持反向竖屏"landscape-primary", //可选,字符串类型,支持横屏"landscape-secondary" //可选,字符串类型,支持反向横屏
],

打包部署测试后发现Android和ios都能正常旋转,但是后面测试发现在ios16版本以上会出现会横屏但是旋转手机竖屏回不来,只有ios16(苹果最新版)版本以上有这个问题在需要在配置中添加"flexible": true,完美解决。

在这里插入图片描述

效果截图如下:

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/20752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于组合双向拍卖的共享储能机制研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 2.1 算例数据 2.2 买家中标 2.3 卖家中标 &#x1f389;3 文献来源 &#x1f308;4 Matlab代码实现 &#x1f4a5;1 概述 文献来源&#xff1a; 摘要&#xff1a;为满足共享储能中储能用户的互补性和替代性需求、解决常规单…

一文说清楚支付架构

作者&#xff1a;陈斌 支付的技术架构是为了保障能够顺利处理支付请求而设计的结构体系。从系统的角度看&#xff0c;它包括了计算机系统的软件、硬件、网络和数据等。从参与的主体角度来看&#xff0c;它涉及交易的付款方、收款方、支付机构、银行、卡组织和金融监管机构等。要…

无涯教程-Lua - while语句函数

只要给定条件为真&#xff0c;Lua编程语言中的 while 循环语句就会重复执行目标语句。 while loop - 语法 Lua编程语言中 while 循环的语法如下- while(condition) dostatement(s) end while loop - 流程图 在这里&#xff0c;需要注意的关键是 while 循环可能根本不执行。…

SOC FPGA之流水灯设计

一、DS-5简介 Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包&#xff0c;为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 1.1 DS-5 eclipse破解 首先下载破解器 然后进入cmd运行&#xff0c;进入到破解器所在文…

XCode升级后QT无法编译的问题

原因是SDK的版本变了&#xff0c;Qt配置的版本要修改。 解决办法如下&#xff1a; 1.找到 /Users/*/Qt/5.15.2/clang_64/mkspecsqdevice.pri 这个文件打开编辑&#xff0c; 在文件末尾追加一句 !host_build:QMAKE_MAC_SDKmacosx13.1 至于这个版本号13.1是怎么来的呢&#xff1…

kafka简介

kafka是什么&#xff1f; Kafka最初采用Scala语言开发的一个多分区、多副本并且基于ZooKeeper协调的分布式消息系统。目前Kafka已经定位为一个分布式流式处理平台&#xff0c;它的特性有高吞吐、可持久化、可水平扩展、支持流处理。 Apache Kafka是一个分布式的发布-订阅消息系…

no_new_privs

kernel.org/doc/Documentation/prctl/no_new_privs.txt Linux Capabilities 入门教程&#xff1a;基础实战篇 - 知乎 (zhihu.com)

两数之和 LeetCode热题100

题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺…

Kubernetes高可用集群二进制部署(三)部署api-server

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署&#xff08;一&#xff09;主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署&#xff08;二&#xff09;ETCD集群部署 Kubernetes高可用集群二进制部署&#xff08;三&#xff09;部署…

代理模式--静态代理和动态代理

1.代理模式 定义&#xff1a;代理模式就是代替对象具备真实对象的功能&#xff0c;并代替真实对象完成相应的操作并且在不改变真实对象源代码的情况下扩展其功能&#xff0c;在某些情况下&#xff0c;⼀个对象不适合或者不能直接引⽤另⼀个对象&#xff0c;⽽代理对象可以在客户…

抄写Linux源码(Day3:启动南大OS)

我们可以尝试启动南大OS&#xff0c;接着阅读南大OS源码&#xff0c;看看 JYY/YZH 构建主引导扇区的手段 &#xff08;注意&#xff1a;我使用的是南大2023年的 OS 实验代码&#xff09; https://jyywiki.cn/OS/2023/labs/Labs 首先&#xff0c;根据 JYY 的文档&#xff0c;…

力扣 C++|一题多解之动态规划专题(1)

动态规划 Dynamic Programming 简写为 DP&#xff0c;是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程。20世纪50年代初&#xff0c;美国数学家贝尔曼&#xff08;R.Bellman&#xff09;等人在研究多阶段决策过程的优化问题时&#xff0c;提出了著名的最优化原理&…

PHP8的数据类型转换-PHP8知识详解

什么是数据类型转换&#xff1f; 答&#xff1a;数据从一个类型转换成另外一个类型&#xff0c;就是数据类型转换。 在PHP8中&#xff0c;变量的类型就是由赋值决定的&#xff0c;也就是说&#xff0c;如果 string 赋值给 $var&#xff0c;然后 $var 的类型就是 string。之后…

【雕爷学编程】MicroPython动手做(30)——物联网之Blynk 3

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

百分点科技跻身中国智慧应急人工智能解决方案市场前三

近日&#xff0c; 全球领先的IT市场研究和咨询公司IDC发布了《中国智慧应急解决方案市场份额&#xff0c;2022》报告&#xff0c;数据显示&#xff0c;2022年中国智慧应急整体市场为104亿元人民币。其中&#xff0c;智慧应急人工智能解决方案子市场备受关注&#xff0c;百分点科…

C# 文件读写 程序

//读写文件 public class ReadWriteFile { public static List<string> ReadFile(string path) { try { using (FileStream fileStream new FileStream(path, FileMode.Open, FileAccess.Read)) { Lis…

【Spring】反射动态修改Bean实例的私有属性值

Cannot cast org.springframework.http.client.InterceptingClientHttpRequestFactory to org.springframework.http.client.OkHttp3ClientHttpRequestFactory 由于RestTemplate在自定义初始化时顺序比较早&#xff0c;想在启动后跟进yum或者注解配置修改初始化的值时&#xff…

Django框架之路由用法

简介 路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序&#xff0c;并返回处理结果&#xff0c;也就是 URL 与 Django 的视图建立映射关系。 Django 路由在 urls.py 配置&#xff0c;urls.py 中的每一条配置对应相应的处理方法。 Django 不同版本 urls.py 配…

浅谈Kubernetes中Service实现(服务注册和发现)

目录 Kubernetes服务发现原理 Kubelet CoreDNS(Kube-DNS) Kube-proxy kube-proxy的三种实现模式 User space模式 iptables模式 IPVS模式 之前浅谈Kubernetes的Service文章中介绍了Service组件的概念以及各种不同类型的service,其中ClusterIP类型的service实现了集群…

Shell ❀ Bash脚本调优方式详解

文章目录 1、简述2、脚本执行过程3、set3.1 set -u3.2 set-x3.3 set -e3.4 set -o pipefail3.5 总结3.6 取消Bash参数调优 1、简述 Linux服务器脚本开发和运维管理常使用Bash脚本&#xff0c;经常遇到以下场景&#xff1a; 未定义变量shell内默认设置为空&#xff0c;导致未定…