收藏
回答

小程序在使用canvans时,iPhone10 iPhone12,开发者遇到白屏?

小程序在使用canvans时,iPhoneX iPhone12,开发者遇到白屏闪一下,导致query.exec方法无法进入回调,

iPhoneX

ios版本16.3

报错信息:检测到 NodesRef.fields 不能立即回调,可能由于 scroll-view 的按需加载特性,使得不在屏的节点无法立即取到节点相关信息。

请看图1,我拍完照是想给照片打水印,用canvas

const query = uni.createSelectorQuery().in(that)//in(this),不加有时获取不到对应的DOM元素

query.select('#myCanvas').fields({ node: true, size: true })

query.exec((_res) => { //这里在白屏的时候 无法进入

const canvas = _res[0].node

const ctx = canvas.getContext('2d')

canvas.width = curWidth

canvas.height = curHeight

//初始化画布

ctx.fillRect(0, 0, canvas.width, canvas.height);

// 创建image

let image = canvas.createImage();

// console.log('获取后的文件地址----',res.path);

image.src = res.path;

// 图片加载完成

image.onload = () => {

// console.log('image.onload成功----',image);

// 绘制图片

ctx.drawImage(image, 0, 0, canvas.width, canvas.height);

// 字体大小

ctx.font = `${myFontSize}px 黑体`;

// 字体颜色

ctx.fillStyle = '#ffffff';

// 绘制文本

ctx.fillText(roleNameInfo, canvas.width - myFontRight, canvas.height - 30)

// 导出图片

const exportImage = () => {

uni.canvasToTempFilePath({

canvas,

fileType:"jpg",

quality: myQuality,

success: async (res) => {

// 上传图片 这里省略

callback(res.tempFilePath)

setTimeout(() => {

// 让图片先加载出来,在关闭

uni.hideLoading()

}, 500)

},

fail: (err) => {

}

})

}

setTimeout(exportImage, 500)

}


出现问题后我点开console 就是打印这个了:检测到 NodesRef.fields 不能立即回调,可能由于 scroll-view 的按需加载特性,使得不在屏的节点无法立即取到节点相关信息。




回答关注问题邀请回答
收藏

1 个回答

  • Demons
    Demons
    2023-09-28

    你好,麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点

    2023-09-28
    有用
    回复
登录 后发表内容