uni.onWindowResize 监听窗口尺寸变化事件详讲

本文详细介绍uni.onWindowResize事件的使用方法,包括如何监听窗口尺寸变化及设备横竖屏状态,并提供了代码示例。同时,介绍了如何在不同场景下正确启用和取消该事件监听。

uni.onWindowResize 监听窗口尺寸变化事件

官方介绍是监听窗口尺寸变化事件(1.6.0 新增),听起来只能监听一下页面的宽高,实际上在 uniapp 中可以用 uni.onWindowResize(CALLBACK) 事件监听到页面的屏幕宽高和当前设备的横竖屏状态

官方文档:uni.onWindowResize(CALLBACK)

PS:本文会比官方文档更详细


uni.onWindowResize(CALLBACK)

监听窗口尺寸变化事件(1.6.0 新增)

各平台支持说明

AppH5微信小程序支付宝小程序百度小程序字节跳动小程序飞书小程序
xxx

CALLBACK 参数说明

属性类型说明
sizeObject变化后的窗口的大小,单位为 px ,{windowWidth,windowHeight,screenHeight,screenWidth}
deviceOrientationString当前屏幕所处的状态,portrait 竖屏 landscape 横屏

官方代码示例


const windowResizeCallback = (res) => {
  console.log('变化后的窗口宽度=' + res.size.windowWidth)
  console.log('变化后的窗口高度=' + res.size.windowHeight)
}
uni.onWindowResize(windowResizeCallback)

个人示例代码

有一点需要注意的就是,uni.onWindowResize 必须放在 onShow() 里面,否则无法做到触发监听。即使是放在 onLoad() 里面,也是 undefined,必须在 onshow() 里面。


export default {
	data() {
		return {
			windowResizeCallback: '',
		}
	},
	onLoad(option) {},
	onShow() {
        // 声明回调函数是为了控制取消监听,不取消也可以直接写在函数内部就好
		this.windowResizeCallback = (res) => {
			console.log('onWindowResize', res);
		}
		uni.onWindowResize(this.windowResizeCallback);
	},
	methods: {}
}

TIPS

  • 如App端设置软键盘弹出方式为adjustResize ,则在键盘弹出时,会触发此事件。

  • 横竖屏切换时,会触发此事件:

    在小程序中会默认竖屏状态,开启横竖屏旋转需要在 pages.json 中进行配置:

    单页面配置旋转

    "pages": 
    [{
    	"path": "pages/tabBar/home/home",
    	"style": {
    		"navigationStyle": "custom",
    		"enablePullDownRefresh": true,
            "pageOrientation": "auto"
    	}
    }]
    

    全局页面配置旋转

    "globalStyle": {
    	"navigationBarTextStyle": "black",
    	"navigationBarBackgroundColor": "#ffffff",
    	"backgroundColor": "#ffffff",
        "pageOrientation": "auto"
    },
    

uni.offWindowResize(CALLBACK)

取消监听窗口尺寸变化事件(1.6.0 新增)

各平台支持情况

AppH5微信小程序支付宝小程序百度小程序字节跳动小程序飞书小程序
xxx

Tips

  • CALLBACK为调用uni.onWindowResize时传入的CALLBACK

    也就是为什么在 uni.onWindowResize(CALLBACK) 上面要声明一个变量

代码示例


export default {
	data() {
		return {
			windowResizeCallback: '',
		}
	},
	onLoad(option) {},
	onShow() {
		this.windowResizeCallback = (res) => {
			console.log('onWindowResize', res);
		}
		uni.onWindowResize(this.windowResizeCallback);
        // 声明后就可以直接阻止事件触发了
        uni.offWindowResize(this.windowResizeCallback);
	},
	methods: {}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值