uniapp在app端页面上下左右滑动问题,禁止上下左右滑动影响canvas和触摸事件

前言

当在app端运行uniapp项目时会有页面回弹效果,即页面拉到最上面或最下面时有一定的拉伸效果让页面更加柔和,但有些场景我们不希望有这种效果,比如页面中有触摸事件并产生图形化效果时,比如有个用来画画的canvas画布时

此时如果存在回弹效果或滑动效果就会影响画图,通过上图中搜索框和canvas画布的拉伸可以看出影响

解决方案

步骤一:关闭页面回弹

全局配置

 在page.json文件的"globalStyle"配置项中添加配置

"globalStyle": {
	// ...其他全局样式配置
	"app-plus": {
		"bounce": "none"
	}
}

局部配置

在page.json文件中需要关闭回弹的页面配置的"style"配置项中添加配置

"style": {
	// ...其他样式配置
	"app-plus": {
		"bounce": "none"
	}
}

步骤二:禁用页面上下滑动

在关闭页面回弹后,页面还是有一定的上下滑动空间(即使布局未超出屏幕),这样还是有时会对触摸事件产生影响,如下图:

 虽然此时不能随意左右拉动,也没有拉伸效果了,但仍然可以上下滑动,通过上图的滚动条可以看出,所以我们需要禁用页面的上下滑动,这里采用的方式是在布局外围包裹一层<scroll-view>组件

在需要禁用滑动效果的页面的布局中添加如下组件到根节点中

<scroll-view style="position: absolute;
bottom: 0px; top: 0px;">
  <!-- ...页面布局内容 -->
</scroll-view>

 添加这个样式是为了适配小程序端和一些特殊情况,如果不手动设置高度<scroll-view>默认不会占满全屏,app端和h5端没有这种情况,如果不适配的结果如下图:

 示例项目的布局代码如下:

<template>
  <view>
    <scroll-view style="position: absolute;
    bottom: 0px; top: 0px;">
      <SearchBox />
      <Canvas />
    </scroll-view>
  </view>
</template>

最终效果

在这两个步骤之后,页面就被牢牢的固定住了,触控事件和canvas画图就像德芙一样丝滑了,最后附上电子签名[doge]

  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uni-app中,可以使用uni.createSelectorQuery()方法和canvas API来实现将页面转为图片的功能,并且支持app小程序两个平台。具体实现步骤如下: 1. 在编辑页面中,添加一个canvas元素,用于绘制海报。 2. 使用uni.createSelectorQuery()方法获取页面上需要绘制的元素节点,如文本、图片等。 ```javascript const query = uni.createSelectorQuery() query.select('#text').boundingClientRect() query.select('#image').boundingClientRect() query.exec((res) => { const textRect = res[0] const imageRect = res[1] // ... }) ``` 3. 在获取到元素节点后,使用canvas API进行绘制,将文本和图片绘制到canvas上。 ```javascript const ctx = uni.createCanvasContext('poster') ctx.drawImage(imageUrl, imageRect.left, imageRect.top, imageRect.width, imageRect.height) ctx.fillText(textValue, textRect.left, textRect.top) ctx.draw() ``` 4. 在canvas绘制完毕后,使用uni.canvasToTempFilePath()方法将canvas转为临时文件路径,用于保存和分享。 ```javascript uni.canvasToTempFilePath({ canvasId: 'poster', destWidth: 750, destHeight: 1334, success: (res) => { this.posterUrl = res.tempFilePath } }) ``` 5. 最后,将生成的海报保存或分享到微信朋友圈等平台。 以上是在uni-app中将页面转为图片的基本实现思路,具体细节和实现方式可以根据实际需求进行调整和优化。同时需要注意,在小程序平台中,需要在小程序后台开通canvas绘图权限才能正常使用canvas API。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值