2010-07-18 91 views
5

我得到關於如何使用模擬器來構建需要支持iphone的新的更高分辨率的應用有點糊塗了4iPhone的視網膜顯示屏

我會選擇iphone4的模擬器時除外運行該應用程序[[UIScreen mainScreen] bounds]會給我960x640回來,但它仍然給我舊的分辨率(480x320)?

儘管iphone4模擬器在我的屏幕上顯示爲巨型手機,但它似乎仍然只包含480x320像素。例如,當我想要在700行上顯示某些內容時,它只會掉到屏幕上?

感謝您對此的任何意見。

回答

8

UIScreen有一個新的scale方法。用scale乘以bounds.size得到像素。您可以將未縮放的值視爲點或虛擬像素。

請注意,UIScreen自從至少3.2以來已經有了一個縮放方法,但它自4.0以來才被記錄,所以respondsToSelector會欺騙你。即使我想了解UIScreen,我也會檢查UIImage的規模。

UIScreen *mainScreen = [UIScreen mainScreen]; 
CGFloat scale = [mainScreen scale]; 
CGRect bounds = [mainScreen bounds]; 
CGRect pixels = bounds; 

if (scale > 0) { 
    pixels.origin.x *= scale; 
    pixels.origin.y *= scale; 
    pixels.size.width *= scale; 
    pixels.size.height *= scale; 
} 
+0

Thx爲您的答案。還有機會回答我的第二個問題嗎? – Oysio 2010-07-18 18:10:20

4

關於解決問題的第二個問題,也許這會幫助你。
從iOS4及更高版本中,有像素,點和比例因子。

[[UIScreen mainScreen] bounds] 

bounds will return points(480x320)而不是像素(960x640)。
iOS4 Application Programming Guide(點與像素):

在iOS中4和後,UIScreen, UIView的,UIImage的,和CALayer的類 暴露,告訴您 點和 像素爲該之間的關係的標度因子特定對象。 在iOS 4之前,此比例因子爲 ,假設爲1.0,但在iOS 4和 之後,它可能是1.0或2.0, ,具體取決於基礎設備的 的分辨率。未來, 其他比例因子也可能是 可能。

+0

我在模擬器中開始將整個tme作爲0來使用..有什麼意見? – 2011-01-15 14:26:59