像素比率

2019-08-14 14:24 更新

PixelRatio 類為像素密度設(shè)備提供了訪問權(quán)。

這里有一些使用 PixelRatio 的用例:

顯示一條和設(shè)備許可一樣細(xì)的線

寬度 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

產(chǎn)品描述

Edit on GitHub

像素網(wǎng)格拍攝

在 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è)定任意位置和尺寸的時候。同時,舍入操作是針對根而不是父母完成的,這又一次避免了累積舍入誤差。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號