- 当前 Bug 的表现(可附上截图)
- 预期表现
- 复现路径
- 提供一个最简复现 Demo
measureText获取字体宽度有问题,
wordNumber = ‘1233333’
nameWidth = ctx.measureText(wordNumber).width,
allReading = nameWidth / app.globalData.ratio + 325;
第一次获取wordNumber的宽度和第二次的不一样,第二次的正确,请问这是什么原因?截图如下,红线框内的分别是两次打印的数值。
我之前碰到的,ctx.measureText('内容').width第二次比和第一次返回的宽度要大,然后在ctx.measureText('内容').width之前先设置好ctx.setFontSize(14)字体大小就没问了。ctx.measureText('内容').width 会以第一次的 字体大小来计算字体长度。
这个获取纯数字的长度在ios上面就会有问题 ,可以在后面 + " " 就可以解决这个问题了
let firstTextW = ctx.measureText(this.data.sData.form_learn_time_week + '').width
麻烦提供能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
const ctx = wx.createCanvasContext('myCanvas')
let nameWidth = ctx.measureText('123456').width
console.log(nameWidth 'nameWidth')
就是这些代码,在绘制的时候,获取‘1234566’的宽度在iOS客户端,获取不到值
这边测试是正常的
额,我这边是真的不行,我最终是这样解决的,就是获取数字正常下的宽度除以数字的个数,得到每个数字的宽度,然后再除以像素屏幕比,再乘以动态获取的数字length长度,计算得出最终的宽度。(正常数字的宽度/个数/像素屏幕比*动态获取的数字length=总数字的宽度)
具体机型和微信版本号是啥呀,给个代码片段看看呗,我这边测试是可以的(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
iOS8,版本12.1.4 代码就是我发的那些