如果页面里从上到下有6张mode为widthfix的图片,要计算出这6张图片的总高度,触发时机应怎么写呢?怎么确定所有图片都已加载完毕,试过@load,但是这个仅针对单张图片,图片是动态读取的,数量不一定
jjhjiyu
- 发布:2021-04-12 14:11
- 更新:2021-04-12 14:33
- 阅读:743
jjhjiyu (作者)
load事件中获取到的event.detail中的高度是原图高度,不是真实高度
2021-04-12 14:30
取舍
回复 jjhjiyu: 如果 你想获得 渲染后的高度, 你可以 将图片的实际宽高 对比 image组件的宽, 算出image组件的高, 或者 等它渲染完成后 用 布局信息api 去获取, 方法有很多
2021-04-12 14:32
jjhjiyu (作者)
实际上我监听load事件,uni.createSelectorQuery()去获取真实高度,如果不加延时,获取到的是0,加了延时才会有正确数值,@load触发了不表示图片已经被渲染了,否则也不会取到0了
2021-04-12 14:34
取舍
回复 jjhjiyu: 你可以直接用 uni.getImageInfo api
2021-04-12 14:36
jjhjiyu (作者)
回复 取舍: 你知道widthfix的公式吗,假如750*300的图片,使用widthfix渲染出来的高度如何计算呢,或者如何确认6张图片全都渲染完毕了,再去获取节点高度
2021-04-12 14:36
jjhjiyu (作者)
回复 取舍: uni.getImageInfo 获取的也是原图宽高,widthfix的图片渲染后的实际高度,不是原图高度,不知道他怎么缩放的,如果有公式我才可以通过@load拿到的原图宽高来计算
2021-04-12 14:42
取舍
回复 jjhjiyu: 假如 你的image组件宽为 300rpx, 那么 imgHeight = img.height/img.width*300 单位(rpx), 你可以在计算中就把rpx 转px, 也可以把结果转px, 确认6张加载完毕就是最上面的代码, 但是你说 load 并不是在图片加载完成后回调,那我就不知道了
2021-04-12 14:42
取舍
回复 取舍: 或者在换种思路, 你可以把图片高度都设成0,先不渲染图片,先用布局信息api拿到图片没渲染之前的高度拿到后渲染图片,把所有图片的高度计算后与之前的值相加就是了,
2021-04-12 14:46
jjhjiyu (作者)
回复 取舍: 图片不用限制宽高,原图就是一张750*300的图片,自适应渲染,要求出渲染后图片的实际高度,如果@load是在图片渲染后回调,那这问题就简单了。。
2021-04-12 14:50
jjhjiyu (作者)
回复 取舍: 我也有这么想过,但是就是无法确定图片到底渲染完没有
2021-04-12 14:52
取舍
回复 jjhjiyu: 说了计算图片高度不用@load了, 你可以直接一个循环用uni.getImageInfo api, 不依赖于模板渲染
2021-04-12 14:54