這個(gè)api主要提供給用戶來(lái)獲取關(guān)于設(shè)備屏幕的一些信息匙头,咱們可以用這個(gè)數(shù)值來(lái)對(duì)咱們的布局進(jìn)行一些適配的設(shè)置虎韵。
不多說(shuō)且改,先來(lái)看一下源碼和官方文檔是怎么寫的:
源碼地址
英文官方文檔
中文官方文檔
static set(dims: {[key:string]: any}) [](http://reactnative.cn/docs/0.22/dimensions.html#set)
這個(gè)函數(shù)只應(yīng)該被原生代碼調(diào)用浦辨。.
@param {object} dims 一個(gè)簡(jiǎn)單的字符串作為key的對(duì)象虐拓,包含了需要設(shè)置的尺寸信息。
static get(dim: string) [](http://reactnative.cn/docs/0.22/dimensions.html#get)
初始的尺寸信息應(yīng)該在runApplication
之后被執(zhí)行单绑,所以它可以在任何其他的require被執(zhí)行之前就可用回官。不過(guò)在稍后可能還會(huì)更新。
注意:盡管尺寸信息立即就可用搂橙,但它可能會(huì)在將來(lái)被修改(譬如設(shè)備的方向改變)歉提,所以基于這些常量的渲染邏輯和樣式應(yīng)當(dāng)每次render之后都調(diào)用此函數(shù),而不是將對(duì)應(yīng)的值保存下來(lái)区转。(舉例來(lái)說(shuō)苔巨,你可能需要使用內(nèi)聯(lián)的樣式而不是在StyleSheet
中保存相應(yīng)的尺寸)。
例子:var {height, width} = Dimensions.get('window');
@param {string} dim 想要獲取的尺寸信息的字段名废离。
@returns {Object?} 返回的尺寸信息值侄泽。
根據(jù)中文的官方文檔,可以看到咱們可以通過(guò)這個(gè)API來(lái)獲取到屏幕的寬和高蜻韭,這樣可以滿足了咱們的大部分的適配需求悼尾,但是有時(shí)候可能還會(huì)考慮到圖片的適配柿扣,及字體的字體,獲取屏幕的寬闺魏、高就不夠了未状。不過(guò)facebook還是考慮的很周到的,咱們可以來(lái)看一下下面這段源碼:
dims.window = {
width: windowPhysicalPixels.width / windowPhysicalPixels.scale,
height: windowPhysicalPixels.height / windowPhysicalPixels.scale,
scale: windowPhysicalPixels.scale,
fontScale: windowPhysicalPixels.fontScale,
};
這雖然是set方法里面的一段代碼析桥,但是這個(gè)方法很清晰的告訴我們司草,通過(guò)window這個(gè)key,咱們不止可以獲取到width烹骨,height的屬性翻伺,還有scale以及fontScale這兩個(gè)屬性,如果有一定移動(dòng)端開(kāi)發(fā)經(jīng)驗(yàn)的工程師來(lái)說(shuō)已經(jīng)可以猜到這兩個(gè)屬性分別代表的是什么含義沮焕。
scale提供的是這個(gè)機(jī)型的屏幕模式吨岭,ios現(xiàn)在提供兩種模式分別是2及3,分別是普通機(jī)型及plus機(jī)型峦树。相應(yīng)的fontscale就是這個(gè)機(jī)型的字體模式辣辫。
現(xiàn)在咱們可以通過(guò)這兩種屬性去對(duì)更多機(jī)型的適配。