uni-app怎样设置横屏?

更新日期: 2022-02-09 阅读: 7.4k 标签: uniapp

在使用uni-app开发app应用时候,应用需要横屏显示,那么该如何实现呢?


一、打开APP就是横屏

方式一:

打开pages.json页面,在globalStyle中添加pageOrientation选项,如下:

"globalStyle": {
"navigationStyle":"custom",
"pageOrientation": "landscape" //横屏配置,支持auto/portrait/landscape
}

属性说明:

"auto":如果页面添加了上述声明,则在屏幕旋转时,这个页面将随之旋转,显示区域尺寸也会随着屏幕旋转而变化;
"portrait":表示固定为竖屏显示。
"landscape":表示固定为横屏显示。

Ps:横屏配置,全局屏幕旋转设置(仅 APP/微信/QQ小程序)。

方式二:

或者在App.vue页面中,添加如下代码

onLaunch: function() {
// #ifdef APP-PLUS
plus.screen.unlockOrientation();//设置横屏-全局globalStyle-pageOrientation已设置
plus.screen.lockOrientation('landscape-primary');
// #endif
},

说明:锁定屏幕方向后屏幕只能按锁定的屏幕方向显示,关闭当前页面后仍然有效。 可再次调用此方法修改屏幕锁定方向或调用unlockOrientation()方法恢复到应用的默认值。

lockOrientation参数值。锁定屏幕方向可取以下值: 

"portrait-primary": 竖屏正方向; 
"portrait-secondary": 竖屏反方向,屏幕正方向按顺时针旋转180°; 
"landscape-primary": 横屏正方向,屏幕正方向按顺时针旋转90°; 
"landscape-secondary": 横屏方向,屏幕正方向按顺时针旋转270°; 
"portrait": 竖屏正方向或反方向,根据设备重力感应器自动调整; 
"landscape": 横屏正方向或反方向,根据设备重力感应器自动调整;


二、设置APP内某个页面为横屏

需要在对应页面onShow()的方法中添加plus.screen.lockOrientation方法:

onShow() {
// #ifdef APP-PLUS
plus.screen.unlockOrientation();//解除屏幕方向的锁定,但是不一定是竖屏;
plus.screen.lockOrientation('landscape-primary');
// #endif
},

在页面卸载时候,需要注意还原哦,比如:

//页面卸载时切换为竖屏配置
onUnload() {
// #ifdef APP-PLUS
plus.screen.lockOrientation('portrait-primary'); //锁死屏幕方向为竖屏
// #endifs
}


三、横屏 IOS安全区如何设置全屏

在应用需要全屏显示的时候,我们发现在ios中,安全区域是可能存在空白的,比如全屏web-view的组件,实现方法如下:

setStyle(){//设置样式
let style={}
if(!this.screen){//竖屏
let safeTopArea = uni.getSystemInfoSync().safeAreaInsets.top
let safeBoottom = uni.getSystemInfoSync().safeAreaInsets.bottom
style={
top: - safeTopArea, //ios的位置上移顶部安全区域的高度
height:uni.getSystemInfoSync().windowHeight + safeBoottom + safeTopArea, //高度+安全区域的高度
}
if(!this.safeTop){//不处理顶部安全区
style={
top:0,
height:uni.getSystemInfoSync().windowHeight + safeBoottom,
}
}
}else{//横屏
let safeLeftArea = uni.getSystemInfoSync().safeAreaInsets.left
let safeRightArea = uni.getSystemInfoSync().safeAreaInsets.left
style={
left: - safeRightArea,
width: uni.getSystemInfoSync().windowWidth + safeLeftArea + safeRightArea,
height:'100%',
}
}
let currentWebview = this.$scope.$getAppWebview() //获取webview
let wv = currentWebview.children()[0]
wv.setStyle(style)
},

该方法仅供参考。


四、uniapp ios无法横竖屏

使用上面的代码,在ios中如果横竖屏切换,会出现无法生效的问题,我们需要在manifest.json文件和pages.json文件进行如下配置

//第一在manifest.json文件下的app-plus=>distribute下配置:
"screenOrientation" : [
"portrait-primary",
"landscape-primary",
"portrait-secondary",
"landscape-secondary"
],
//第二在pages.json文件的globalStyle下配置:
"pageOrientation": "auto"
//最后在需要横竖屏的页面调用
//竖屏
plus.screen.lockOrientation('portrait-primary');
//横屏
plus.screen.lockOrientation('landscape-primary');


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/10965

相关推荐

uni-app关于iOS安全区解决方案

在uniapp开发中,我们可能会遇到一个问题,就是在iOS设备上底部会有一个安全区域,导致页面无法完全显示。因为iphoneX等机型最下面会有条黑色等线,导致按钮等元素被遮住部分,所以设置安全区边距会往上提

uni-app 微信小程序授权登录

uni.getUserInfo 接口调用方式起初通过button 来获取用户信息,或者 直接调用 uni.getUserInfo 来获取信息 在当前微信更新接口后,这2个接口将直接返回匿名用户数据,不在弹窗提示

uni-app中使用computed计算属性

computed里面的属性不能在data属性中出现,用来监控computed中自定义的变量 ,computed合适多个变量或对象处理后返回一个结果值,其中一个值发生变化则computed监控的属性值就会发生变化

uniapp如何打64位的安装包?

目前安卓在上架一些平台会要求64位,否则导致提交审核不成功,比如提示:请提供64位版本软件包后再提交审核。同时在一些骁龙8Gen3的手机上,也不在兼容32位的应用和游戏了

uniapp如何开启短震动_触感反馈实现

使用 uni-app 开发一款 app,需求中有一项是点击 触感反馈,查阅了 uni-app 相关文档,发现并没有对应的 API,最开始尝试用 震动 的方式来模拟 触感反馈 , 但是感觉效果并不好

uniapp开发注意事项

static 目录下的 js 文件不会被编译,如果里面有 es6 的代码,不经过转换直接运行,在手机设备上会报错。css、less/scss 等资源同样不要放在 static 目录下

uniapp之this作用域

发现了点击按钮1可以更新title内容,但是点击按钮2却无法更新title内容。这个究竟是为什么呢?在changeTitle2方法的success方法中,该success方法指向闭包,所以this属于闭包

uni-app实现苹果内购支付功能

首先我们需要勾选苹果支付,在manifest.json中,选择App模块配置->Payment(支付)。然后打包需要选择打基座包来测试。

uniapp验证码倒计时60s的实现

发送验证码时,不能让客户一直发送验证码,所以需要设置一个60s后才能发送一次;具体代码实现:因为app和其他app不太一样,所以需要选择以这样的方式展示是时间,但是js逻辑代码是一样的;

uniapp 页面跳转传值和接收

首先介绍最原始的跳转方法,类似于html中的 a 标签,不过在uniapp中需要将 a 标签换成 <navigator url=跳转的地址>……</navigator>

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!