iPhone:UINavigationBar带按钮-调整高度
我正在开发一个iPhone应用程序,它可以在两个方向上工作:纵向和横向 我正在使用UINavigationController中嵌入的一个视图和tableview。此导航栏及其按钮的高度为:44px纵向或34px横向 在另一个视图中,我自己创建了UINavigationBar,我可以将框架设置为正确的大小,但是嵌入UIBarButtonItem的UINavigationItem不会收缩。因此,对于横向模式下的34像素,该按钮太大,在高度上与导航栏重叠 有趣的是,这在其他应用程序中使用了相同的代码。。。不知道哪个不在这里 是否有调整uibarbuttonite的高度/位置的方法 以下是代码片段:iPhone:UINavigationBar带按钮-调整高度,iphone,height,uinavigationbar,uibarbuttonitem,uinavigationitem,Iphone,Height,Uinavigationbar,Uibarbuttonitem,Uinavigationitem,我正在开发一个iPhone应用程序,它可以在两个方向上工作:纵向和横向 我正在使用UINavigationController中嵌入的一个视图和tableview。此导航栏及其按钮的高度为:44px纵向或34px横向 在另一个视图中,我自己创建了UINavigationBar,我可以将框架设置为正确的大小,但是嵌入UIBarButtonItem的UINavigationItem不会收缩。因此,对于横向模式下的34像素,该按钮太大,在高度上与导航栏重叠 有趣的是,这在其他应用程序中使用了相同的代码
navBar = [[UINavigationBar alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 320.0f, 34.0f)];
[navBar setBarStyle: UIBarStyleBlackOpaque];
[self addSubview: navBar];
barButton = [[UIBarButtonItem alloc] initWithTitle: NSLocalizedString(@"flip", @"flip") style:UIBarButtonItemStylePlain target:self action:@selector(flip)];
item = [[UINavigationItem alloc] initWithTitle: NSLocalizedString(@"Translation", @"Translation Tab Bar Title")];
[item setRightBarButtonItem: barButton];
[navBar pushNavigationItem:item animated:NO];
谢谢
Tom创建备用图像,并在处理旋转动画的视图控制器方法中,更改栏按钮项目中的图像。或者您可以在项目中使用
UIImageView
作为自定义视图,并将其内容模式设置为缩小图像。我算出了:导航栏的高度必须为32像素!在33或34像素的情况下,对齐会出错。以下是我根据crashtesttommy的答案编写的代码:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
- (void) correctNavBarHeightForOrientation:(UIInterfaceOrientation)orientation {
// This is only needed in on the iPhone, since this is a universal app, check that first.
if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone){
if (UIInterfaceOrientationIsLandscape(orientation)) {
self.navBar.frame = CGRectMake(self.navBar.frame.origin.x, self.navBar.frame.origin.y, self.navBar.frame.size.width, 32.0f);
} else {
self.navBar.frame = CGRectMake(self.navBar.frame.origin.x, self.navBar.frame.origin.y, self.navBar.frame.size.width, 44.0f);
}
}
}
- (void) viewWillAppear:(BOOL)animated {
[self correctNavBarHeightForOrientation:[UIApplication sharedApplication].statusBarOrientation];
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[self correctNavBarHeightForOrientation:toInterfaceOrientation];
}
非常有帮助,谢谢。32px是关键。我用的是34px,但没用。