uniapp图片设置双指放大缩小这个功能相对来说比较简单的

首先,点击触发图片浏览界面

在浏览界面去实现图片移动和放缩

图片设置双指放大缩小这个功能相对来说比较简单的,是用于官方文档的路径(组件->视图容器->movable-area),movable-area可以做双指放大缩小,并且放大的同时可以左右移动图片(页面),至于怎么做呢?

用HBuilder X编辑器创建个uni-app项目

html代码

<template>
<view>
<view class="uni-padding-wrap uni-common-mt">
<movable-area scale-area>
<movable-view direction="all" @scale="onScale" scale="true" scale-min="1" scale-max="4" :scale-value="scale">
<image src="图片路径" mode="widthFix"></image>
</movable-view>
</movable-area>
</view>
</view>
</template>```

需要说一下movable-view标签里的 scale-min=“1” scale-max="4"是干嘛用的,这两个设置相对来说也比较重要
scale-min 拿图片来说,如果 scale-min=“0.5” 的话那图片就会显示50%,不会完全100%显示,所以就让他初始化等于 1
scale-max 他的意思是双指放大可以放大几倍,比如 scale-max=“4” 那么双指放大4倍
movable-area是不需要写任何js代码的

onScale是空函数

css代码

```php
movable-view {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height:100%;
}
movable-area {
height: 100%;
width: 100%;
position:fixed;
overflow: hidden;
}
movable-view image{
width:100%;
}```

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 `uni-app` 自带的 `movable-view` 组件来实现双指放大缩小功能。 具体步骤如下: 1. 在 `template` 中添加 `movable-view` 组件,并设置 `scale` 属性为 1,`scale-min` 属性为 0.5,`scale-max` 属性为 2,`bindtouchstart`、`bindtouchmove`、`bindtouchend`、`bindtouchcancel` 四个事件的处理函数。 ```html <movable-view class="container" scale="1" scale-min="0.5" scale-max="2" bindtouchstart="handleTouchStart" bindtouchmove="handleTouchMove" bindtouchend="handleTouchEnd" bindtouchcancel="handleTouchEnd" > <!-- 可缩放内容 --> </movable-view> ``` 2. 在 `methods` 中定义四个事件处理函数。 ```javascript methods: { handleTouchStart(event) { // 记录起始触摸点距离 this.startDistance = this.getDistance(event.touches); }, handleTouchMove(event) { // 计算当前触摸点距离 const currentDistance = this.getDistance(event.touches); const scale = this.data.scale + (currentDistance - this.startDistance) / 100; // 更新缩放比例 this.setData({ scale }); // 更新起始触摸点距离 this.startDistance = currentDistance; }, handleTouchEnd() { // 限制缩放比例在指定范围内 let scale = this.data.scale; if (scale < this.data['scale-min']) { scale = this.data['scale-min']; } else if (scale > this.data['scale-max']) { scale = this.data['scale-max']; } this.setData({ scale }); }, handleTouchCancel() { // 取消触摸 this.handleTouchEnd(); }, getDistance(touches) { // 计算两个触摸点的距离 const x = touches[0].clientX - touches[1].clientX; const y = touches[0].clientY - touches[1].clientY; return Math.sqrt(x * x + y * y); } } ``` 其中,`handleTouchStart` 函数记录起始触摸点距离,`handleTouchMove` 函数计算当前触摸点距离,并根据距离变化计算新的缩放比例,`handleTouchEnd` 函数限制缩放比例在指定范围内,并更新缩放比例,`handleTouchCancel` 函数与 `handleTouchEnd` 函数类似,用于处理触摸取消的情况,`getDistance` 函数计算两个触摸点的距离。 注意:在 `movable-view` 组件中,`scale` 属性的值必须为字符串类型,因此需要使用 `setData` 方法更新缩放比例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值