最近一直在用wx-charts作为小程序的图标渲染工具,但是一个问题是wx-charts中的高度(height
)、宽度(width
)的单位是px,在不同设备上可能会出现大小比例不一致的问题。下面是我的解决方案:
解决方案
- 在
.js
文件渲染图表的位置,添加如下代码:
var windowWidth = 375;
try {
var res = wx.getSystemInfoSync();
windowWidth = res.windowWidth;
} catch (e){
console.error('getSystemInfoSync failed!');
}
设置windowWidth的初始值是为了在无法获取屏幕宽度的情况下,程序仍能继续运行,保证了程序的鲁棒性。
- 计算几个量:
设已知屏幕宽度为p,在该已知屏幕上显示的图表宽度为m,高度为n;
设任意未知屏幕宽度为windowWidth,在该屏幕下图标的宽度为w,高度为h。则:
由windowWidth/w = p/m,得w = (windowWidth*m)/p;
由m/n = w/h和上式结果,得h = (windowWidth*n)/p;
- 将上式计算得出的w和h代入:
columnChart = new wxCharts({
//...其他参数
width: (windowWidth*[在某一指定屏幕上的宽度])/p,
height:(windowWidth*[在某一指定屏幕上的高度])/p,
});
结果图
- iPhone 8 Plus大小
-
iPhone 8大小: