Изменение размера UINavigationBar при вращении - PullRequest
7 голосов
/ 01 декабря 2009

У меня есть подкласс UIViewController, который обрабатывает UIView. Контроллер представления представлен модально (он скользит вверх от нижней части экрана). В верхней части окна я добавил панель навигации. Обратите внимание, что эта панель не обрабатывается контроллером навигации.

Я хочу, чтобы высота панели навигации уменьшалась при повороте представления в горизонтальное положение (аналогично тому, как оно ведет себя при обработке UINavigationController) Однако я не могу установить для его маски авторазмера гибкую высоту в IB, а в коде это приводит к полному исчезновению панели навигации.

Есть ли способ сделать это? Как это делает UINavigationController?

P.S. Я бы предпочел не прибегать к преобразованию масштабирования, так как это могло бы испортить текст в заголовке.

РЕДАКТИРОВАТЬ: я решил с небольшой помощью, прочитайте ответ, опубликованный ниже.

Ответы [ 2 ]

5 голосов
/ 01 декабря 2009

Вместо того чтобы установить маску авторазмера, почему бы вам просто не проверить текущую ориентацию в viewWillAppear, а также в didRotateFromInterfaceOrientation и установить соответствующий кадр?

- (void) updateNavBar {
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
    if ((UIInterfaceOrientationLandscapeLeft == orientation) ||
        (UIInterfaceOrientationLandscapeRight == orientation)) {
        myNavBar.frame = CGRectMake(0, 0, 480, 34);
    } else {
        myNavBar.frame = CGRectMake(0, 0, 320, 44);
    }
}
- (void) viewWillAppear {
    [self updateNavBar];
    // ... SNIP ...
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    [self updateNavBar];
    // ... SNIP ...
}
1 голос
/ 03 декабря 2009

Я нашел решение, и задним числом я чувствую себя довольно глупо. Мне просто нужно было включить гибкое нижнее поле в маску авторазмера панели навигации. Кредит принадлежит пользователю RayNewbie в этой теме, который указал мне на решение:

http://discussions.apple.com/thread.jspa?messageID=8295525

...