Вопрос

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

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

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

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

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

Это было полезно?

Решение 2

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

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

Другие советы

Вместо того, чтобы устанавливать маску автоматического изменения размера, почему бы вам просто не проверить текущую ориентацию в 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 ...
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top