Изменить размер содержимого после отображения строки состояния iPhone

У меня есть приложение для iPhone, которое я хочу начать со скрытой строки состояния, чтобы показать заставку и переключить строку состояния обратно, когда загружается содержимое, которое будет показано (требуется несколько раз, так как оно должно быть загружено через Интернет), используя [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES]. Я хочу, чтобы мое содержимое отображало размер и положение себя правильно после отображения и скрытия строки состояния. Я хочу, чтобы мое приложение могло работать с любой ориентацией устройства (возможно, исключая ориентацию сверху вниз, как указано в руководстве Apple).

Моя проблема: я не могу заставить приложение появляться так, как должно. Либо он показывает пробел 20pt после авторотации, либо скрывается ниже строки состояния, когда он появляется.

Каким должен быть правильный способ справиться с этим?

Я еще не тестировал его, но думаю, что такие же проблемы возникнут в панели входящих вызовов.

EDIT:

Я постараюсь лучше объяснить, в чем проблема. Когда приложение запускается, строка состояния скрыта, а в системе координат окна верхний угол видимой области окна составляет 0,0 в системе координат окна. Затем я задвигаюсь в строке состояния. Это не меняет размер окна, поэтому 0,0 точка теперь скрыта за строкой состояния. В верхней левой части видимой области окна 0,20, и мне нужно переместить мой вид на эти координаты (и соответствующим образом изменить его размер до 320 * 460). Но если я поверну устройство, а затем вернусь в исходное положение, верхняя левая координата видимой области окна снова станет 0,0, а теперь окно будет размером 320 * 480.

Обходной путь заключается в том, чтобы сохранить флаг, указывающий, был ли телефон ранее повернут, но нет ли способа изменить координаты окна при повороте в другое положение, а затем обратно?

Ответ 1

Да, те же проблемы возникают при вызове. В качестве альтернативы, панель звукозаписи делает то же самое. (Его проще и, возможно, дешевле начать запись голосового заметок и вернуться в свое приложение, чтобы проверить, как он обрабатывает дополнительную панель.)

Настройка масок автоматического изменения размера в представлении - это то, что обычно подстраивает для вас.

Если вы создаете свой пользовательский интерфейс в XIB, вы можете играть с настройками до тех пор, пока ваши представления не изменят размер при изменении полосы или при движении устройства или симулятора.

Помните, что также важны настройки маски на содержащихся в ней областях.

Ответ 2

Действительно ли работает ответ @walt? Я попытался добавить этот флаг к каждому виду представления представления контроллера, но без везения там я пропущу sth?

self.view.autoresizingMask =  UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

Это решение решило мою проблему, но выглядит уродливо. Мне нужно изменить размер окна представления контроллера представления.

Ответ 3

Это должно исправить вашу проблему.

Просто вид:

[self.view setFrame: [self.view bounds]];

Вид со списком прокрутки внутри

[self.view setFrame: [self.view bounds]];
[self.theScroller setFrame: [self.view bounds]];

"theScroller - это имя моего scrollview