2010-06-25 39 views
12

爲什麼我在蘋果公司(如PhotoScroller)一些示例代碼中看到,我應該做loadView以下內容:UIScreen界與applicationFrame

CGRect frame = [[UIScreen mainScreen] bounds]; 

代替

CGRect frame = [[UIScreen mainScreen] applicationFrame]; 

它使獲得主屏幕的框架有何不同?

回答

17

ApplicationFrame是屏幕大小減去狀態欄的大小(如果可見),界限是屏幕大小,與狀態欄無關。

所以applicationFrame將返回CGRectMake(0,0,320,460)假設你的應用程序有狀態欄設置爲可見,而邊界將在同等條件下返回CGRectMake(0,0,320,480)。這些數字都假設iPhone/iPod Touch的屏幕尺寸。

UIScreen Class Reference

+8

我可能會誤會,但不會applicationFrame返回CGRectMake(0,20,320,460)?其中20是狀態欄的偏移量... – 2011-12-06 13:51:16

+2

你沒錯,Niels :)。 y偏移量將被報告爲20,狀態欄不爲0. – Nate 2012-05-08 01:25:15

+0

Hi @jamone,如果顯示Personal Hotspot,該怎麼辦?它似乎需要20點高(與狀態欄相同)。 applicationFrame會在4英寸的3.5英寸iPhone和CGRectMake(0,40,320,528)上返回CGRectMake(0,40,320,440)嗎? – Cong 2013-11-11 04:10:15

2

的iOS 9更新

當使用iPad上的拆分視圖功能,applicationFrame返回您的應用程序窗口的大小。 bounds總是返回設備的大小。

+2

'-applicationFrame'在iOS 9中**棄用** – 2016-09-27 00:21:03

相關問題