我有點惱火。我有一個應用程序的狀態欄在主窗口中可見。因爲我想動態設置我的視圖和幀大小(例如,在通話期間狀態欄佔用40個像素)。如何獲得實際的[UIScreen mainScreen]幀大小?
我能做到兩者之一:
[[UIScreen mainScreen] bounds];
[[UIScreen mainScreen] applicationFrame];
的真的很煩人,這是這兩個輸出兩組不同的值,每個同樣無用。
bounds
將輸出:{{0, 0}, {320, 480}}
而
applicationFrame
將輸出{{0, 20}, {320, 460}}
正如你所看到的,bounds
給出正確y原點但隨後(右下方狀態欄0開始)給出了480的高度,這是不正確。它應該是460,因爲狀態欄是可見的。然後我們有applicationFrame
,它從狀態欄下面20個像素開始(因此有一個上限),但是會給出正確的高度。但是,如果無論如何都會推低20個像素,這並不是很有用。
任何幫助?
特別有用。在這種情況下,邊界是物理玻璃屏幕,applicationFrame就是沒有狀態欄的邊界。要清楚,它們都在** SAME座標**,「玻璃」座標中。所以邊界開始(顯然!)爲零,而應用程序框架始於狀態欄結束的位置 - 在19之後,即20! – 2012-09-14 01:37:47
這是完全正確的,良好的交往時
– Fattie 2013-12-04 17:10:10CGPoint p = [[UIScreen mainScreen] bounds] .origin; CGSize s = [[UIScreen mainScreen] applicationFrame] .size; CGRectMake(p.x,p.y,s.width,s.height);如果你真的想要一個的起源和另一個的大小。 – Kevin 2016-02-22 11:48:53