uniapp uview 头像裁剪组件的问题

当切换页面频繁进出头像裁剪组件u-avatar-cropper.vue   获取同一个设备信息时会出现两种不同的高度具体如下

 

 

导致 头像裁剪页面高度出现问题,下方按钮被canvas组件遮盖了

 

解决方法

 在进入这个页面前的一个页面做如下代码操作

直接将设备信息提前获取,保存到缓存中

onReady() {
			if(!uni.getStorageSync('rectInfo')){
				let rectInfo = uni.getSystemInfoSync();
				uni.setStorageSync('rectInfo',rectInfo)
			}
			
		},

u-avatar-cropper.vue 组件中,直接从缓存中拿信息

### uni-app 中 `uv-avatar` 组件的使用方法及布局实现 #### 1. 安装与引入 在项目中使用 `uv-avatar` 组件前,需确保已安装对应的 UI 库。如果未安装,则可以通过 npm 或手动下载的方式完成。 对于本案例中的组件库 `uv-ui` 和 `uni-ui`[^1],可以按照以下方式进行安装: ```bash npm install @dcloudio/uni-ui npm install uv-ui ``` 随后,在项目的入口文件(如 main.js)中全局注册这些组件: ```javascript import uView from '@/unpackage/uv-ui-tools/libs/uview/index'; Vue.use(uView); ``` --- #### 2. 基础用法 以下是 `uv-avatar` 的基础配置及其常用属性说明: | 属性名 | 类型 | 默认值 | 描述 | |--------------|----------|-------------|----------------------------------------------------------------------| | src | String | "" | 头像图片地址 | | size | Number | 40 | 图片大小(px),可设置具体数值 | | shape | String | "circle" | 形状,可选值:"circle"(圆形)、"square"(方形) | | mode | String | "aspectFit" | 裁剪模式,同 image 标签的 mode | 示例代码如下: ```html <template> <view class="container"> <!-- 圆形头像 --> <uv-avatar :src="avatarUrl" size="60" shape="circle"></uv-avatar> <!-- 方形头像 --> <uv-avatar :src="avatarUrl" size="60" shape="square"></uv-avatar> </view> </template> <script> export default { data() { return { avatarUrl: "https://example.com/avatar.jpg" }; } }; </script> <style scoped> .container { display: flex; justify-content: space-around; align-items: center; } </style> ``` 上述代码展示了如何创建一个圆形和方形的头像,并设置了具体的尺寸。 --- #### 3. 动态绑定与事件处理 除了静态展示外,还可以动态绑定用户的头像链接并监听点击事件。例如: ```html <template> <view class="container"> <uv-avatar :src="user.avatar" size="80" shape="circle" @click="handleClick(user.id)" ></uv-avatar> </view> </template> <script> export default { data() { return { user: { id: 1, name: "张三", avatar: "https://example.com/user_avatar.png" } }; }, methods: { handleClick(userId) { console.log(`User ID clicked: ${userId}`); } } }; </script> ``` 此部分实现了当用户点击头像时触发回调函数的功能。 --- #### 4. 自定义样式与布局调整 为了更好地适配不同场景下的需求,可通过 CSS 对齐方式或容器结构调整来优化布局效果。比如将多个头像水平排列或者堆叠显示。 ##### 水平排列 通过 Flexbox 实现多头像横向分布: ```html <template> <view class="avatars-container"> <uv-avatar v-for="(item, index) in avatars" :key="index" :src="item.src" size="50" shape="circle"></uv-avatar> </view> </template> <script> export default { data() { return { avatars: [ { src: "https://example.com/avatar1.jpg" }, { src: "https://example.com/avatar2.jpg" }, { src: "https://example.com/avatar3.jpg" } ] }; } }; </script> <style scoped> .avatars-container { display: flex; gap: 10px; /* 设置间距 */ margin-top: 20px; } </style> ``` ##### 堆叠显示 利用绝对定位叠加多个头像图标: ```html <template> <view class="stacked-avatars"> <uv-avatar :src="avatars[0].src" size="70" shape="circle" style="z-index: 3;"></uv-avatar> <uv-avatar :src="avatars[1].src" size="60" shape="circle" style="position: absolute; top: 10px; left: 10px; z-index: 2;"></uv-avatar> <uv-avatar :src="avatars[2].src" size="50" shape="circle" style="position: absolute; top: 20px; left: 20px; z-index: 1;"></uv-avatar> </view> </template> <script> export default { data() { return { avatars: [ { src: "https://example.com/avatar1.jpg" }, { src: "https://example.com/avatar2.jpg" }, { src: "https://example.com/avatar3.jpg" } ] }; } }; </script> <style scoped> .stacked-avatars { position: relative; width: fit-content; height: fit-content; } </style> ``` 以上两种方案分别适用于不同的业务逻辑下对界面美观度的要求。 --- #### 5. 注意事项 - **跨平台兼容性**:由于 UniApp 支持 H5、小程序以及 App 端开发,因此需要注意某些特定平台上可能存在的差异表现。 - **性能优化**:大量加载远程图片资源可能会增加页面渲染时间,建议采用懒加载机制减少初始耗时[^2]。 --- ### 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值