const EPS = 1e-4
|
const BASE_DEVICE_WIDTH = 750
|
let isIOS = false
|
let deviceWidth = 0
|
let deviceDPR = 0
|
|
function checkDeviceWidth () {
|
const {
|
platform,
|
pixelRatio,
|
windowWidth
|
} = __GLOBAL__.getSystemInfoSync() // uni=>__GLOBAL__ runtime 编译目标是 uni 对象,内部不允许直接使用 uni
|
|
deviceWidth = windowWidth
|
deviceDPR = pixelRatio
|
isIOS = platform === 'ios'
|
}
|
|
export function upx2px (number, newDeviceWidth) {
|
if (deviceWidth === 0) {
|
checkDeviceWidth()
|
}
|
|
number = Number(number)
|
if (number === 0) {
|
return 0
|
}
|
let result = (number / BASE_DEVICE_WIDTH) * (newDeviceWidth || deviceWidth)
|
if (result < 0) {
|
result = -result
|
}
|
result = Math.floor(result + EPS)
|
if (result === 0) {
|
if (deviceDPR === 1 || !isIOS) {
|
result = 1
|
} else {
|
result = 0.5
|
}
|
}
|
return number < 0 ? -result : result
|
}
|