看板 MacDev 關於我們 聯絡資訊
底下是小弟個人心得,有疏漏煩請指正 ==原生解析度== 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的大小 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.224.61.194 ※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1410335244.A.A10.html ※ 編輯: vcore (61.224.61.194), 09/10/2014 15:48:20
manlike: 怎麼變成這樣了 0.0 09/10 15:50
vcore: 不好意思,前一篇有筆誤! 實際上原有4吋app可以fit新大螢幕 09/10 15:51
vcore: 但是會變成是放大的模式。 09/10 15:51
vcore: 若透過[UIScreen mainScreen] bounds] 09/10 15:52
vcore: 在iPhone6,6+上得到的會是不同的結果(667x375與736x414) 09/10 15:53
elver: 我用xcode5 GM版 跑上面的模擬器 和你的有出入耶~ 09/11 11:49
elver: [[UIScreen mainScreen]bounds] 09/11 11:50
elver: 5s=>320x568 6=>320x568 6+=>320x568 09/11 11:51
elver: -------------------------------------- 09/11 11:51
elver: [[UIScreen mainScreen] nativeBounds] 09/11 11:52
elver: 5x=>640x1136 6=>640x113 6+=>960x1704 09/11 11:55
elver: ^6 09/11 11:55
elver: -------------------------------------- 09/11 11:57
elver: [[UIScreen mainScreen] nativeScale] 09/11 11:57
elver: 5s=>2.00 6=>2.00 6+=>3.00 09/11 11:58
elver: 打太快 xcode6 GM版 >_< 09/11 12:06
vcore: 我也是GM版 請問您Launch image有加入嗎? 09/11 16:14
vcore: 要加入新的launch image,才不會以放大的模式執行 09/11 17:09
elver: ~~~!!? 我沒加Launch image 09/18 08:52