微信小程序屏幕适配不(bù)同的(de)iPhone
發表時(shí)間:2022-7-26
發布人(rén):融晨科技
浏覽次數:140
wx.getSystemInfo(Object object) | 微信開放文檔
wx.getSystemInfo({
success (res) {
console.log(res.model)
console.log(res.pixelRatio)
console.log(res.windowWidth)
console.log(res.windowHeight)
console.log(res.language)
console.log(res.version)
console.log(res.platform)
}
})
蘋果手機不(bù)通機型在(zài)同一個(gè)系統下狀态欄的(de)高度可能不(bù)通,從ios14開始,劉海屏手機的(de)狀态欄不(bù)一定是(shì)44,ios14系統增加了(le/liǎo) 一個(gè)隐私提示燈 功能,因此ios14之(zhī)前狀态欄高度:有劉海屏iPhone爲(wéi / wèi)44,無劉海屏爲(wéi / wèi)20。
但是(shì)從ios14開始有劉海屏的(de)iPhone狀态欄高度不(bù)一定是(shì)44了(le/liǎo)。如:
iPhoneXR,iPhone11 狀态欄高度爲(wéi / wèi)48,
iPhone X,iPhone 11 Pro,iPhone 11 Pro Max,iPhone 12 mini,狀态欄高度44,
iPhone 12,iPhone 12 Pro,iPhone 12 Pro Max,狀态欄高度爲(wéi / wèi)47.
iPhone 13 mini狀态欄高度爲(wéi / wèi)50,
iPhone 13,iPhone 13 Pro,iPhone 13 Pro Max,狀态欄高度爲(wéi / wèi)47.
ihoneX
通過ihoneX真機打印手機信息參數model包含手機型号信息
通過ihone6s真機打印手機信息參數model包含手機型号信息
所有設備型号官網地(dì / de)址: Models - The iPhone Wiki
或
https://gist.github.com/adamawolf/3048717由于(yú)劉海屏的(de)狀态欄的(de)高度不(bù)固定,但是(shì)都是(shì)大(dà)于(yú)20的(de),非劉海屏的(de)狀态欄都是(shì)20,
所以(yǐ)判斷是(shì)iPhone劉海屏機型的(de)條件就(jiù)可以(yǐ)是(shì): model帶iPhone字樣 && statusBarHeight > 20,
我們寫一個(gè)全局變量在(zài)app.js文件中:
在(zài)onLaunch方法中加入下面代碼
var _this = this;
wx.getSystemInfo({
success: function (res) {
console.log('手機設備信息',res);
// 判斷設備是(shì)否爲(wéi / wèi)劉海屏
if (res.model.indexOf("iPhone") >= 0 && (res.statusBarHeight > 20)) {
_this.globalData.isIPhoneXSeries = true;
_this.tabbarSafeBottomMargin = res.screenHeight - res.safeArea.bottom
}
}
})
ios開發屏幕适配pt和(hé / huò)px之(zhī)間的(de)換算,小程序開發px和(hé / huò)ios開發的(de)px不(bù)等同
vh_CSS3屬性_CSS參考手冊 - html中文網
用法:
const app = getApp()
//注意獲取的(de)tabmargin的(de) 單位是(shì)px而(ér)不(bù)是(shì)rpx ,不(bù)用劉海屏手機上(shàng)tabmargin的(de)大(dà)小都是(shì)34px,在(zài)ios開發中用的(de)是(shì)tabmargin是(shì)34pt,微信小程序開發px和(hé / huò)ios開發的(de)px不(bù)完全等同的(de)