果玩软件园:为用户提供海量热门软件、游戏等手机资源下载服务!

装机必备热门标签玩游戏装软件BT游戏H5游戏看教程专题游戏盒子手机版

果玩软件园

所在位置:首页 > 资讯教程 > 软件教程 >  > 详情

如何在微信小程序中实现手势缩放图片?

文章来源:网络作者:浅殇发布时间:2026-05-27 23:53:51

GM盒子
GM盒子(高返利版)
GM手游福利平台,免费送首充,上线送VIP,免费领元宝和代金券。
Ready

  对于如何在微信小程序中实现手势缩放图片?还不明白的朋友们,一起来看看小编为大家准备的这篇教程吧。

  在小程序中,image 组件的 mode 有 12 种,其中只有三种是缩放模式。而在这三种之中,只有 aspectFit 模式可以等比例缩放图片,并显示完整的图片。此模式是保证图片长边完整地显示出来,而手机屏幕宽度都较小,以 iphone 6 为例,仅有 375 px。因此在小程序中浏览横向的图片或尺寸较大的图片时,图片细节就难以查看清楚(如下图)。

  因此能动态的通过手势缩放图片,就很有必要。大众比较熟悉的手势是类似 app 中的双指缩放,我们的目标也是在小程序中实现此效果。

  爱范儿工程师在仔细研究微信小程序的所有事件后发现,可以通过 touchmove 事件来实现双指缩放图片。此技术的核心思想是根据两只手指相对距离的变化来对图片进行放大或缩小。因此只要能知道两只手指相对距离的变化,并能做到对图片的动态缩放,就能实现我们想要的功能。

  在手指接触到屏幕并开始移动后,对应的组件上就会以约为 16ms(屏幕渲染频率) 一次的速度不断触发 touchmove 事件,最后手指离开屏幕后,则会触发 touchend 事件。

  touchmove 事件所包含的事件对象中有一个 touches 属性,此属性为当前停留在屏幕中的触摸点信息的数组。触摸点的信息包括 identifier(触摸点的标志符)、pageX / pageY(距离文档左上角的距离)、clientX / clientY(距离屏幕可显示区域左上角距离)。通过 clientX / clientY 可确定手指在屏幕上的位置。

  xMove = e.touches[1].clientX - e.touches[0].clientX;

  yMove = e.touches[1].clientY - e.touches[0].clientY;

  distance = Math.sqrt(xMove * xMove + yMove * yMove);

  distance 即为两只手指之间的距离。将此距离储存下来,下一次 touchmove 被触发的时候,再计算一次 distance。distanceDiff(newDistance - oldDistance) 即为两次 touchmove 触发的间隔间两个手指相对距离的变化值。此值为正数时,表示两指间距离在变大,即需要放大图片,反之则为需要缩小图片。

  下面则需要确定一个规则,将 distance 的变化值与图片放大或缩小的变化率关联起来。我们将图片正常显示时的尺寸定为基准值,即 baseWidth 和 baseHeight,图片需要放大的倍数为 scale,scale 的初始值和最小值为 1,最大值可根据需要来设置。

  经过多次试验,确定了一个公式:

  newScale = oldScale + 0.005 * distanceDiff

  此公式中的 0.005 为图片的缩放比例。在实测中,使用 0.005 这个值可获得比较良好的缩放体验。

  通过上面的步骤,图片上绑定 touchmove 事件后,每次 touchmove 被触发后,我们都可以计算出新的图片需要被放大的倍数 scale。即每次 touchmove 被触发后,都可以得到一组图片被放大后的高宽值:scaleWidth(scale * baseWidth)、scaleHeight(scale * baseHeight)。

  通过下面的方式就可以实现动态的更改图片的高宽

  实现了图片的缩放之后,还需要一个容器存放图片,用 view 组件包裹 image,并设置overflow:scroll,即可以做到自由的缩放和浏览图片。

  但是微信小程序中有一个更合适的组件:scroll-view,设置 scroll-x 和 scroll-y 为true,在放大图片后,滑动浏览图片时拥有比较良好的浏览体验。

  但是,目前版本(0.10.102800)中的 scroll-view 组件还存在一个渲染上的 bug,偶尔会出现界面闪动的现象。而在双指缩放存在于 scroll-view 中的图片,极易触发此 bug。此问题,暂时只能等待微信进行修复,或者放弃 scroll-view,即放弃更好的滑动浏览效果,而使用 view 组件。

  以上就是如何在微信小程序中实现手势缩放图片的全部内容了,大家都学会了吗?

End
复制本文链接资讯文章为果玩软件园所有,未经允许不得转载。
热门游戏MORE+
相关资讯MORE+
最新录入
热门资讯
新游新品榜
手机游戏
休闲益智
赛车竞速
棋牌桌游
角色扮演
动作射击
体育竞技
经营养成
策略塔防
冒险解谜
音乐游戏
手游辅助
H5游戏
BT游戏
手机软件
社交聊天
系统工具
时尚购物
旅游出行
影音播放
生活实用
办公学习
资讯阅读
拍摄美化
游戏辅助
健康医疗
地图导航
小说漫画
安全防护
育儿亲子
手游下载
梦想三国之勇往直前0....
炼仙传说0.1折
不可思议的刀剑与魔法...
逍遥浪人
奇幻梦旅人
玄影0.1折
点击冒险之旅(0.1折特...
天神赵子龙0.1折
九州异兽记0.1折
龙魂魔法0.1折
装机软件
爱奇艺电脑版
Steam下载管家 2026最...
360游戏大厅
GoLink加速器
3DM驱动大师
夸克
豆包电脑版
360C盘扩容大师
360录屏
360极速浏览器
精选专题
手机游戏专题
手机软件专题
电脑软件专题
电脑游戏专题
游戏排行榜
手游排行榜
软件排行榜
BT排行榜
电脑软件排行榜
电脑游戏排行榜