[閒聊] iPhone6/6+螢幕大小筆記

作者: vcore (vcore)   2014-09-10 15:47:20
底下是小弟個人心得,有疏漏煩請指正
==原生解析度==
iPhone3GS: 480x320 (163ppi)
iPhone5: 1136x640 (326ppi)
iPhone6: 1334x750 (326ppi)
iPhone6+: 1920x1080 (401ppi)
(ppi=pixels per inch)
但是對於開發者來說,程式裡面得到的螢幕大小(虛擬座標系)是
==虛擬座標系==
iPhone5: 568x320 (實際大小1136x640 points,scale=2.0)
iPhone6: 667x375 (實際大小1334x750 points,scale=2.0)
iPhone6+: 736x414 (實際大小2208x1242 points,scale=3.0)
對開發者來說,UIImage載入的圖片檔的suffix有差異
(1) 在iPhone6上使用的仍然是image@2x.png之類的suffix name。(ppi與前代相同)
(2) 但是在iPhone6+上使用的是image@3x.png的suffix name
注: 401ppi的iPhone6+是iPhone3GS 163ppi的2.46倍,但是可能是為了命名考量
Apple選擇的是@3x的大小,也就是圖檔在螢幕上顯示時將會被縮小2.46/3=0.82倍
==Launch image==
在iPhone6上的實際尺寸為: 1334x750
在iPhone6+上的實際尺寸為: 2208x1242
Launch image實際在iPhone6+螢幕上顯示時,
將會被縮放到1920x1080的大小(縮小為原尺
寸的0.869倍)
Q:在程式中如何得知目前裝置的螢幕大小是多大?
iOS8引進了兩個新的API, nativeScale與nativeBounds
可以得知實際的螢幕大小
CGRect rect = [[UIScreen mainScreen] nativeBounds];
iPhone6上將會得到1334x750的大小
作者: manlike ( )   2014-09-10 15:50:00
怎麼變成這樣了 0.0
作者: vcore (vcore)   2014-09-10 15:51:00
不好意思,前一篇有筆誤! 實際上原有4吋app可以fit新大螢幕但是會變成是放大的模式。若透過[UIScreen mainScreen] bounds]在iPhone6,6+上得到的會是不同的結果(667x375與736x414)
作者: elver (elver)   2014-09-11 11:49:00
我用xcode5 GM版 跑上面的模擬器 和你的有出入耶~[[UIScreen mainScreen]bounds]5s=>320x568 6=>320x568 6+=>320x568--------------------------------------[[UIScreen mainScreen] nativeBounds]5x=>640x1136 6=>640x113 6+=>960x1704^6--------------------------------------[[UIScreen mainScreen] nativeScale]5s=>2.00 6=>2.00 6+=>3.00打太快 xcode6 GM版 >_<
作者: vcore (vcore)   2014-09-11 16:14:00
我也是GM版 請問您Launch image有加入嗎?
作者: elver (elver)   2014-09-18 08:52:00
~~~!!? 我沒加Launch image

Links booklink

Contact Us: admin [ a t ] ucptt.com