[[UIScreen mainScreen] bounds]
給出整個窗口的正確的尺寸,但它包括狀態欄的大小。如果您需要狀態欄的大小(可以減去其高度),則應使用[[UIApplication sharedApplication] statusBarFrame]
來獲取狀態欄的框架。導航欄和標籤欄一般有44的高度所以,使用CGRectMake()
如果您需要爲您的視圖中呈矩形:
CGRect frame_screen = [[UIScreen mainScreen] bounds];
CGRect frame_view = CGRectMake(0,0,frame_screen.size.width,frame_screen.size.height - [[UIApplication sharedApplication] statusBarFrame].size.height);
注意的CGRectMake
最後一個參數是高度,通常你可以減去44的標籤欄或導航欄。
編輯:嘗試記錄[UIScreen mainScreen].applicationFrame
和[[UIScreen mainScreen] bounds]
控制檯,看看它們之間有什麼區別。類似於
CGRect frame_screen = [[UIScreen mainScreen] bounds];
NSLog(@"x: %f, y: %f, width: %f, height: %f",frame_screen.origin.x,frame_screen.origin.y,frame_screen.size.width,frame_screen.size.height);
CGRect frame_application = [UIScreen mainScreen].applicationFrame
NSLog(@"x: %f, y: %f, width: %f, height: %f",frame_application.origin.x,frame_application.origin.y,frame_application.size.width,frame_application.size.height);
然後使用該信息使[[UIScreen mainScreen] bounds
框架如何您需要它。
嗨,我們需要減去rect.size.height - [[UIApplication sharedApplication] statusBarFrame] .size.height。僅使用rect.size.height時,我找到了相同的結果。那是對的嗎? –
是因爲,它會帶你的畫面[[UIApplication的sharedApplication] statusBarFrame] .size.height下來,所以不會降低屏幕的下部將被裁剪。 –
謝謝!邊界包括狀態欄,所以我們需要一些計算來獲得實際的框架從邊界 –