автоматическое изменение высоты UIToolbar в альбомной ориентации - PullRequest
2 голосов
/ 17 июня 2011

У меня есть пользовательский UIToolBar, который не регулирует свою высоту в соответствии с панелью навигации в верхней части экрана при повороте в альбомный режим.Высота остается неизменной, что делает его немного странным.Панель инструментов по умолчанию из UINavigationController на самом деле уменьшается в размерах при повороте на альбомную ориентацию (к сожалению, я не могу использовать ее из-за проблем с перемещением push / pop).Текущая маска изменения размера:

[ customToolbar setAutoresizingMask: ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin ) ];

Если я добавлю «UIViewAutoresizingFurable Height », происходят странные вещи ... поэтому я не совсем уверен, стоит ли мне это использовать.

Пожалуйста, дайте мне знать, если кто-нибудь знает правильный способ автоматического изменения размера / поворота UIToolBar для соответствия высоте панели навигации.

Ответы [ 3 ]

5 голосов
/ 28 июля 2011

Если вам нужно изменить размер пользовательской панели инструментов с тем же соотношением сторон, что и на стандартной панели навигации, вам следует реализовать метод контроллера willAnimateRotationToInterfaceOrientation, например:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    CGRect navigationToolbarFrame = self.navigationController.navigationBar.frame;
    CGRect customToolbarFrame = CGRectOffset(navigationToolbarFrame, 0.0, navigationToolbarFrame.size.height);
    [UIView animateWithDuration:duration animations:^{
        self.customToolbar.frame = customToolbarFrame;     
    }];
}
1 голос
/ 17 июня 2011

Самый простой способ добиться этого - создать UINavigationcontroller и представить его как модальное представление, я использую что-то вроде этого:

NewViewController *f = [[NewViewController alloc]initWithNibName:@"NewView"
                                            bundle:[NSBundle mainBundle]];
self.newViewController = f;

[f release];

UINavigationController *navigationController = [[UINavigationController alloc]
                           initWithRootViewController:self.newViewController];

 [self presentModalViewController:navigationController animated:YES];

Поскольку вы представляете представление как навигационный контроллер, выможно использовать свойство панели инструментов.

0 голосов
/ 17 июля 2011

Не уверен насчет масок, но вы можете изменить размер представления в -willRotateToInterfaceOrientation: duration :.Просто измените рамку там, чтобы удовлетворить ваши потребности.Вы также можете сделать это в -willAnimateRotationToInterfaceOrientation: duration:

...