W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
PixelRatio 類為像素密度設(shè)備提供了訪問權(quán)。
這里有一些使用 PixelRatio 的用例:
寬度 1 實(shí)際上相當(dāng)于 iPhone4+ 的厚度,我們可以使用設(shè)定寬度為 1 / PixelRatio.get()
的函數(shù)來實(shí)現(xiàn)。這是一項(xiàng)獨(dú)立于像素密度的應(yīng)用在所有設(shè)備上的技術(shù)。
style={{ borderWidth: 1 / PixelRatio.get() }}
如果你使用的是一臺像素密度比較高的設(shè)備上,那你應(yīng)該得到一個更高分辨率的圖像。一個好的經(jīng)驗(yàn)法則是在 pixel ratio 上顯示多種圖像的尺寸。
var image = getImage({ width: 200 * PixelRatio.get(), height: 100 * PixelRatio.get() }); <Image source={image} style={{width: 200, height: 100}} />
static get()
返回設(shè)備的像素密度。一些例子:
PixelRatio.get() === 2
iPhone 4, 4S
iPhone 5, 5c, 5s
iPhone 6
PixelRatio.get() === 3
iPhone 6 plus
在 iOS 里,你可以為元素指定有任意精度的位置和尺寸,例如29.674825。但是,最終的物理顯示就只有一個固定的像素值,例如在 iPhone4 上是 640960,或者在 iPhone6 上是 7501334。iOS 試圖通過將一個原始的像素擴(kuò)展成多個值得方法,看似是盡可能忠實(shí)于用戶的體驗(yàn)價值,實(shí)際上是欺騙了眾人的眼睛。這項(xiàng)技術(shù)的缺點(diǎn)是使得生成的元素看起來很模糊。
實(shí)際上,我們發(fā)現(xiàn)開發(fā)人員并不需要這項(xiàng)功能,但是為了避免生成模糊的像素,他們不得不對它進(jìn)行手動舍入操作。在 React Native 里,我們都是自動對這些元素進(jìn)行舍入。
在進(jìn)行舍入時,我們必須相當(dāng)?shù)男⌒?。你永遠(yuǎn)不希望在同一時間使用正常值和四舍五入的值,那就好像你正在不斷的積累舍入誤差。甚至一個舍入誤差會造成致命性的錯誤,因?yàn)橐粋€像素邊界可能會消失或者變成兩倍那么大。
在 React Native 里,在JS和布局引擎里的一切值都是以一個任意精度的數(shù)來進(jìn)行工作的。這只會發(fā)生在當(dāng)在為主線程里我們進(jìn)行舍入的原生元素設(shè)定任意位置和尺寸的時候。同時,舍入操作是針對根而不是父母完成的,這又一次避免了累積舍入誤差。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: