收藏
回答

请问getSystemInfo和getSystemInfoSync的区别

问题模块
API和组件

官方文档中wx.getSystemInfo()和wx.getSystemInfoSync()的说明十分简单,麻烦具体说明一下两者的区别,例如在什么场景下使用wx.getSystemInfo()或wx.getSystemInfoSync()。

其次,screenHeightscreenWidth)和windowHeightwindowWidth)这两者又有什么联系,“可使用”是指什么呢?

目前遇到一个问题,在一个下拉加载的列表中,使用screenHeight可以正常显示,使用windowHeight在大屏手机可以正常显示,但是小屏手机(例如iPhone5)中,底部会留有一大块空白区域。

最后,一个屏幕的长度像素是screenHeight * pixelRatio吗?


谢谢解答!(((((ી(・◡・)ʃ)))))

最后一次编辑于  2017-08-14  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

9 个回答

  • 晨
    2017-08-14

    getSystemInfo 是异步方法,getSystemInfoSync是同步方法

    screenHeight 是屏幕总高度,windowHeight是webview可显示区域高度,不包含顶部标题栏

    2017-08-14
    赞同
    回复
  • Kiddo
    Kiddo
    2017-08-15

    @晨 谢谢解答。那我这样理解对吗?


    这样的话windowHeight应该有点兼容性的问题哦,目前遇到一个问题,我在webview里面做了一个下拉加载的列表。列表的高度,使用screenHeight可以正常显示;使用windowHeight在大屏手机iPhone6可以正常显示(底部也有一点点留白,但还没有影响),但是小屏手机iPhone5中,底部会留有一大块空白区域(很大一块,差不多占了屏幕1/3)。

    样式代码:scroll-view style="height: {{window_height - 80}}rpx; margin-top: 80rpx;"

    window_height = windowHeight(或screenHeight) * pixelRatio;

    2017-08-15
    赞同
    回复
  • 晨
    2017-08-15

    之前说的不太完整,windowHeight不包括通知栏、标题栏和tabBar,他的单位是px。rpx的计算不是直接乘pixelRatio。请参考WXSS文档

    2017-08-15
    赞同
    回复
  • Kiddo
    Kiddo
    2017-08-15

    嗯嗯,那screenHeight和windowHeight的区别是这样对吗?

    1.作用域不同:screenHeight是整合手机屏幕的高度,windowHeight是webview(不包括手机通知栏、小程序标题栏和tabBar)的高度;

    2.单位不同:screenHeight的单位是rpx,windowHeight的单位是px;

    screenWidthwindowWidth只有单位不同对吧?


    最后,结合WXSS的文档,rpx的计算不是rpx = px * pixelRatio 吗?例如iphone6,750rpx = 375px * 2。

    如果要实现一个高度与webview一样的下拉加载列表,单位用rpx,是不是这样子取值呢?

    1.window_height = screenHeight

    2.window_height = windowHeight * pixelRatio

    2017-08-15
    赞同
    回复
  • 晨
    2017-08-15

    单位都是px


    2017-08-15
    赞同
    回复
  • Kiddo
    Kiddo
    2017-08-15

    哦哦,我找到问题所在了。目前我列表的高度取的是:screenHeight*pixelRatio(这是正常的),但按照你的说法,其实我应该取windowHeight*pixelRatio(在iphone5底部有空白区域)。我重新把获取的设备信息打印出来看了一下,发现iphone5和iphone6的pixelRatio是一样的,这个值按照比例换算来说应该不一样的吧?


    ------这是iPhone5的


    ------这是iPhone6的


    2017-08-15
    赞同
    回复
  • 晨
    2017-08-15

    你没有搞清楚pixelRatio设备像素比的含义,可以参照web API的devicePixelRatio。请先查阅资料了解一下,不要想当然。

    2017-08-15
    赞同
    回复
  • Kiddo
    Kiddo
    2017-08-15

    (꒪ꇴ꒪(꒪ꇴ꒪ ;)哈?你说的此pixelRatio非彼pixelRatio,那pixelRatio到底是啥啊?web API的devicePixelRatio只有wx.getSystemInfo()和wx.getSystemInfoSync()出现文档上的说明就“设备像素比”5个字,我们很难弄懂啊,我已经通篇阅读过开发文档了,结合wxss那一篇的说明,得出结论就是这样滴,不是想当然。

    2017-08-15
    赞同
    回复
  • 昆仑
    昆仑
    2018-09-09

    文档确实没有解释好pixelRatio和rpx,px的关系。

    如果很多人都看了想当然的得出错误的结论。那么就是文档说的不够清楚

    2018-09-09
    赞同
    回复