Приложение для iPhone изменяет вид на willChangeStatusBarFrame и приостанавливает - PullRequest
0 голосов
/ 11 ноября 2010

В моем приложении у меня есть UINavigationController с UINavigationBar, который я создал программно. UINavigationBar имеет настраиваемое позиционирование в представлении, но всякий раз, когда вызывается / didChangeStatusBarFrame (когда вы активируете строку состояния в вызове), или когда приложение приостанавливается и возобновляется, navBar автоматически возвращается на верхнюю часть экрана.

Мне удалось несколько изменить это поведение, удерживая мой navBar на месте внизу, но теперь он создает ВТОРОЙ navBar, который перемещается наверх.

Почему это происходит и как я могу предотвратить это? Это новая проблема с iOS 4 - приложение отлично работало в 2.x и 3.x.

Кроме того, прежде чем приступить к обсуждению Руководства по интерфейсу пользователя, обратите внимание, что я знаю, что Apple не хочет UINavigationBars внизу. Тем не менее, это пользовательское приложение, которое будет использоваться мной и мной в одиночку, и я требую, чтобы панель была внизу. Кроме того, эта проблема сводит меня с ума, и я хочу знать ответ, где бы ни находился мой navBar ...

1 Ответ

0 голосов
/ 11 ноября 2010

Дракончик, это немного взломать, но это работает.Чтобы держать navBar внизу при отображении состояния вызова:

- (void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame {
    [navigationController setNavigationBarHidden:YES];
}

- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame {
    [navigationController setNavigationBarHidden:NO];
    CGSize s2 = navBar.bounds.size;
    [navBar setFrame:CGRectMake(0, [navigationController.view bounds].size.height-s2.height, s2.width, s2.height)];

}

И поскольку многозадачность с этим приложением не только не нужна, но и нежелательна, я отключил ее, добавив в список следующие:

Application does not run in background

Это все еще не отвечает на мой вопрос о том, почему navBar прыгнул на вершину, и это хакерское исправление, но пока оно должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...