StatusBarFrame возвращает кадр в экранных координатах. Я считаю, что правильный способ получить то, чему это соответствует в координатах вида, это сделать следующее:
- (CGRect)statusBarFrameViewRect:(UIView*)view
{
CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
CGRect statusBarWindowRect = [view.window convertRect:statusBarFrame fromWindow: nil];
CGRect statusBarViewRect = [view convertRect:statusBarWindowRect fromView: nil];
return statusBarViewRect;
}
Теперь в большинстве случаев окно использует те же координаты, что и экран, поэтому [UIWindow convertRect:fromWindow:]
ничего не меняет, но в случае, если они могут отличаться, этот метод должен делать правильные вещи.