我有点恼火。我有一个应用程序的状态栏在主窗口中可见。因为我想动态设置我的视图和帧大小(例如,在通话期间状态栏占用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