На iOS 8 У меня странное поведение в отношении навигационной панели и изменений ориентации.iOS 8: Представление контроллера модального вида в портрете вызывает изменение размера навигационной панели базового контроллера ландшафтной навигации
У меня есть контроллер навигации, который сообщает о поддерживаемой ориентации интерфейса UIInterfaceOrientationMaskLandscapeRight
. Навигационная панель имеет ожидаемую высоту для альбомной ориентации (к сожалению, я не имею права опубликовать скриншоты).
Затем я инициирую модальное представление контроллера вида, который поддерживает только UIInterfaceOrientationMaskPortrait
. Когда начинается анимация презентации, кажется, что метрики основного навигационного контроллера изменены на портретную презентацию, так как высота навигационной панели увеличивается до размера его портрета, как показано выше.
iOS 7 не проявляет такого поведения. Что мне не хватает? Я хочу восстановить прежнее поведение.
Вот полный код простого примера выше:
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
DOGButtonViewController *root = [DOGButtonViewController new];
DOGOrientedNavigationController *navi = [[DOGOrientedNavigationController alloc] initWithRootViewController:root];
navi.allowedInterfaceOrientations = UIInterfaceOrientationMaskLandscapeRight;
self.window.rootViewController = navi;
[self.window makeKeyAndVisible];
return YES;
}
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortrait;
}
@end
@implementation DOGOrientedNavigationController
- (NSUInteger)supportedInterfaceOrientations
{
return self.allowedInterfaceOrientations;
}
@end
@implementation DOGButtonViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Button View Controller";
}
- (BOOL)prefersStatusBarHidden
{
return YES;
}
- (IBAction)buttonClicked:(id)sender
{
DOGPortraitViewController *vc = [DOGPortraitViewController new];
[self presentViewController:vc animated:YES completion:nil];
}
@end
@implementation DOGPortraitViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Portrait Title";
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (IBAction)buttonClicked:(id)sender
{
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}
- (BOOL)prefersStatusBarHidden
{
return YES;
}
@end
В более сложной настройке я также опыт текста в UIWebView, содержащемся в навигационном контроллере масштабируется, когда представляя портрет модальность. При утере модальности текст не изменяется до первоначального размера.
Удалось ли вам найти решение этой проблемы? Я испытываю то же самое –
К сожалению нет, но я посмотрю на это в ближайшие дни. – thewulf
Аналогичная проблема здесь. Похоже, контроллер представления также вращается (хотя это не должно) – Carlos