iOS開發(fā)之像素與點(diǎn)

相信iOSer們都被iOS開發(fā)中像素和點(diǎn)這兩個概念困擾過,經(jīng)過一段時間的學(xué)習(xí)和總結(jié),再次為大家講講我的個人理解,希望對和我有同樣困惑的同學(xué)一些幫助...

首先谅年,點(diǎn)(point)是Apple制定的一個獨(dú)立于物理設(shè)備的邏輯坐標(biāo)單位。像素(pixel)是組成圖象的最基本單元肮韧。這兩個概念是不完全等同的融蹂。在iphone4之前的設(shè)備中,一個點(diǎn)等同于一個像素的大小弄企。

像素的理解:

一個像素有多大呢超燃?主要取決于顯示器的分辨率,相同面積不同分辨率的顯示屏拘领,其像素點(diǎn)大小就不相同。
OK约素,這又引入了一個叫做“分辨率”的名詞届良。

分辨率:每一個長度方向上的像素個數(shù) 乘以 每一個寬度方向上的像素個數(shù)的形式。

拿iPhone 6 Plus為例:
iphone 6 Plus 的分辨率為 1242 x 2208 (實(shí)際:1080 × 1920)(pixels)圣猎,屏幕大小為5.5英寸(5.5英寸為對角線長度士葫,屏幕比例為16 :9)
根據(jù)勾股定理就可以算出來屏幕寬和高對應(yīng)的英寸長度。

點(diǎn)的理解:

點(diǎn)送悔,是一個虛擬的單位慢显,并非實(shí)際存在的爪模。
蘋果從iphone4開始在在設(shè)備上使用宣稱的“Retina”屏幕,Retina在英文中荚藻,是視網(wǎng)膜的意思屋灌。
在Retina屏幕中,一個點(diǎn)(point)占據(jù)2個像素的寬度鞋喇。
而在之后的 iphone 6 Plus 和 iphone 7 Plus 中更推出超高像素密度的“Retina”屏幕声滥,像素密度(PPI)達(dá)到 401。

像素密度(PPI): 英文全稱:pixels per inch侦香,即:像素/英寸落塑,也叫像素密度,它是描述在水平的和垂直的方向上罐韩,每英寸距離的圖像包含的像素(pixel)數(shù)目憾赁。因此PPI數(shù)值越高,即代表顯示屏能夠以越高的密度顯示圖像散吵。當(dāng)然龙考,顯示的密度越高,擬真度就越高矾睦。

所以在超高像素密度的 iphone 6 Plus 和 iphone 7 Plus 上晦款,一個點(diǎn)(point)占據(jù)3個像素的寬度(注意:此處僅僅代表單方向的寬度)。

介紹完點(diǎn)和像素的區(qū)別枚冗,下面就分別講一下在開發(fā)中的用法:

UI:

我們親愛的的美工妹子缓溅,在為iOS設(shè)備設(shè)計(jì)時都是用像素(pixels)衡量的。
從@2x 到 @3x赁温,素材的分辨率提高了1.5倍坛怪,例如:@2x的素材為44 x 44 (pixels),那么相應(yīng)的@3x素材大小為66 x 66 (pixels)股囊。

@2x 和 @3x 的由來:

初代iPhone屏幕尺寸為3.5英寸袜匿,PPI為163。
從Retina屏幕開始稚疹,PPI提升到326居灯。
直至Plus系列的PPI為 401。

先再計(jì)算一下iPhone 6 Plus 的像素和點(diǎn):
屏幕點(diǎn)坐標(biāo)系設(shè)計(jì)的寬度為 414 x 736 (points)贫堰,理論對應(yīng)像素應(yīng)該是:1242 x 2208(pixels)穆壕。
但是,iPhone 6 Plus 的物理像素為:1080 x 1920(pixels)其屏,對應(yīng)5.5英寸的屏幕喇勋,所以像素密度就計(jì)算出來就是401。

在iPhone 4 -- iPhone 7產(chǎn)品中偎行,除了iphone 6 Plus 和 7 Plus川背,其他所有iPhone的PPI是一致的贰拿,都是326,用@2x的素材熄云。
但是iphone 6 Plus 和 7 Plus的實(shí)際DPI是401膨更,理論上蘋果應(yīng)該用401 / 326 * @2x=@2.46x的素材。但是這個奇葩的比例對UI來說很難切圖缴允。

所以荚守,蘋果為方便開發(fā)者,用的是@3x的素材练般,然后再縮放到@2.46x上矗漾,實(shí)際上是縮放到2.46/3=82%。
而實(shí)際上分辨率為1080 x 1920(pixels)薄料,1920/2208≈0.87敞贡,1080/1242≈0.87, 所以這樣算下來摄职,物理分辨率和虛擬分比率的比例是87%誊役。
這樣可以是開發(fā)者更方便,比如準(zhǔn)備素材時谷市,字號可以直接調(diào)成@3x的蛔垢。

當(dāng)我們需要使用某張圖片時,只需要在xcode的Assets.xcassets中添加上它的@2x 和 @3x的樣張迫悠,系統(tǒng)會根據(jù)當(dāng)前機(jī)型自動選擇合適的圖片展示啦桌。

看完下面這張圖,你也許能完全理解上面所說的概念了:

1126909-97ad00c600751e42.png
比例因子 scale :scale屬性反映了從邏輯坐標(biāo)到設(shè)備屏幕坐標(biāo)的轉(zhuǎn)換及皂,在非視網(wǎng)膜屏幕上,比例因子值為1.0且改,即邏輯坐標(biāo)系中的一個點(diǎn)等于設(shè)備中一個像素(1×1)验烧;在視網(wǎng)膜屏幕中,比例因子值為2.0,即邏輯坐標(biāo)系中的一個點(diǎn)等于設(shè)備中四個像素(2×2);同理又跛,在6plus這種scale為3.0的設(shè)備上碍拆,1point等于9pixels。

控件的尺寸匹配:

說道這慨蓝,應(yīng)該對像素和點(diǎn)有個大概的了解了感混。在開發(fā)中可能還會遇到一些困惑:

假設(shè)一個控件在iPhone 6上的寬度為125(points),對比屏幕寬度375(points)礼烈,125/375 ≈ 33% 弧满,剛好占據(jù)屏幕寬度的三分之一。
同一控件展示在6Plus系列上時此熬,125/414 ≈ 30% 庭呜,還不到屏幕寬度的三分之一滑进,會顯得稍微短一些。

所以募谎,我們在設(shè)計(jì)控件寬度的時候扶关,盡量少使用類似125(points)這樣的死數(shù)據(jù)。

如果實(shí)在有必要使用的話数冬,有一種解決辦法就是:
假設(shè):你的基準(zhǔn)機(jī)型是iphone 6的話节槐,可以自己得出一個比例因子,在通過比例因子去自動適配其他機(jī)型拐纱。
可以在項(xiàng)目中引入這樣一個宏:

#define BASE 375
#define SCALEWITH_2X(WID) \
[UIScreen mainScreen].bounds.size.width / BASE * WID

最后再多說一句铜异,“文”有AutoLayout,“武”有Masonry戳玫,基本上可以滿足絕大多數(shù)布局要求了吧~

以上就是關(guān)于像素和點(diǎn)的一些基本知識了熙掺,若有偏否,歡迎指正咕宿!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末币绩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子府阀,更是在濱河造成了極大的恐慌缆镣,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件试浙,死亡現(xiàn)場離奇詭異董瞻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)田巴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門钠糊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人壹哺,你說我怎么就攤上這事抄伍。” “怎么了管宵?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵截珍,是天一觀的道長。 經(jīng)常有香客問我箩朴,道長岗喉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任炸庞,我火速辦了婚禮钱床,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘燕雁。我一直安慰自己诞丽,他們只是感情好鲸拥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著僧免,像睡著了一般刑赶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上懂衩,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天撞叨,我揣著相機(jī)與錄音,去河邊找鬼浊洞。 笑死牵敷,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的法希。 我是一名探鬼主播枷餐,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼苫亦!你這毒婦竟也來了毛肋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤屋剑,失蹤者是張志新(化名)和其女友劉穎润匙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唉匾,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡孕讳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了巍膘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厂财。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖峡懈,靈堂內(nèi)的尸體忽然破棺而出蟀苛,到底是詐尸還是另有隱情,我是刑警寧澤逮诲,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站幽告,受9級特大地震影響梅鹦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冗锁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一齐唆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冻河,春花似錦箍邮、人聲如沸茉帅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堪澎。三九已至,卻和暖如春味滞,著一層夾襖步出監(jiān)牢的瞬間樱蛤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工剑鞍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昨凡,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓蚁署,卻偏偏與公主長得像便脊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子光戈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容