自动调整UIToolbar的横向高度

时间:2011-06-16 20:22:32

标签: iphone rotation uitoolbar autoresize

我有一个自定义UIToolBar,当我旋转到横向模式时,它不会调整它的高度以匹配屏幕顶部的导航栏。高度保持不变,这看起来有点奇怪。 UINavigationController中的默认工具栏在旋转到横向时实际上减小了尺寸(遗憾的是,由于推/弹转换问题,我无法使用它)。当前的大小调整掩码是:

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

如果我添加“UIViewAutoresizingFlexible Height ”会发生奇怪的事情......所以我不确定是否应该使用它。

如果有人知道自动调整大小/旋转UIToolBar以匹配导航栏高度的正确方法,请告诉我。

3 个答案:

答案 0 :(得分:5)

如果您需要使用与标准导航栏相同的宽高比调整自定义工具栏的大小,您应该实现这样的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 :(得分:1)

实现这一目标的最简单方法是创建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];

由于您将视图呈现为导航控制器,因此您可以使用工具栏属性。

答案 2 :(得分:0)

不确定遮罩,但您可以在-willRotateToInterfaceOrientation中调整视图的大小:duration:。只需在那里更换框架即可满足您的需求。您也可以在-willAnimateRotationToInterfaceOrientation中执行此操作:duration: