收藏
回答

ios中,boundingClientRect获取节点信息时,模拟器与真机返回的数据不一样

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug boundingClientRect 微信iOS客户端 7.0.17 2.14.0

代码如下:

const that = this
const query = uni.createSelectorQuery()
query.select('#screen').boundingClientRect()
query.exec(function(res) {
    const { width, height } = res[0]
    console.log(res)
    that.screenSize = {
        screenWidth: width,
        screenHeight: height
    }
}


模拟器中打印如下:


iPhone6真机(iPhonex等机型也与模拟器返回数据存在很大误差)打印如下:

安卓机型不会出现类似情况

补充信息:这是在横屏模式下,screen获取的是图一中图片的大小区域

最后一次编辑于  11-09
回答关注问题邀请回答
收藏

2 个回答

  • 老张
    老张
    11-09

    以真机为准。

    11-09
    有用
    回复
  • Michael
    Michael
    11-09

    自己找到问题所在了,原因在于图片可能没有加载完成就去拿节点,导致节点信息数据有误,改为在去获取图片原始大小的api回调中再获取节点信息即可:示例如下

    uni.getImageInfo({
        src,
        success(res) {
            that.getScreenSize()
        }
    })
    


    11-09
    有用
    回复
登录 后发表内容
问题标签