(Я понимаю, что это старый вопрос, но я потратил полчаса, пытаясь найти ответ сам, но безуспешно, поэтому я решил опубликовать его здесь для всех, кто застрянет ... особенно, если вы пытаетесь ПОКАЗАТЬ строку состояния, и ваше представление в конечном итоге перекрывает ее)
Я нашел, что это работает, если вы хотите скрыть строку состояния ...
[[UIApplication sharedApplication] setStatusBarHidden:YES];
[self.view setFrame: [[UIScreen mainScreen] bounds]];
но не тогда, когда вы хотите ПОКАЗАТЬ строку состояния ...
в этом случае я использую это решение, которое работает, но беспокоит меня, потому что оно жестко кодирует высоту строки состояния до 20 ...
меня также беспокоит, что я должен по-разному настраивать вид в зависимости от ориентации. но если я этого не делал, то всегда было 20 очков на неправильном краю.
В моем случае я хочу отключить строку состояния для некоторых представлений, а затем снова включить, когда я вернусь. У меня были особые проблемы, если я поворачивал устройство, когда бар был выключен. так что выражение switch, хотя и некрасиво (кто-то может опубликовать более чистое решение), работает.
[[UIApplication sharedApplication] setStatusBarHidden:NO];
CGRect frame = [[UIScreen mainScreen] bounds];
switch (self.interfaceOrientation)
{
case UIInterfaceOrientationPortrait:
frame.origin.y = 20;
frame.size.height -= 20;
break;
case UIInterfaceOrientationPortraitUpsideDown:
frame.origin.y = 0;
frame.size.height -= 20;
break;
case UIInterfaceOrientationLandscapeLeft:
frame.origin.x = 20;
frame.size.width -= 20;
break;
case UIInterfaceOrientationLandscapeRight:
frame.origin.x = 0;
frame.size.width -= 20;
break;
}
[self.view setFrame:frame];