Изменить размер содержимого после отображения строки состояния 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