我有自定义标题视图中定制的UINavigationBar(不同大小,背景等)。我使用此代码来实现此目的:
UIView * mainView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
mainView.backgroundColor = [UIColor yellowColor];
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0,0,kScreenWidth,80)];
navBar.autoresizingMask = UIViewAutoresizingFlexibleWidth;
UINavigationItem *currentItem = [[UINavigationItem alloc] init];
UILabel *label = [[UILabel alloc] init];
label.font = [UIFont fontWithName:@"Helvetica-Bold" size: 30.0];
[label setBackgroundColor:[UIColor clearColor]];
[label setTextColor:[UIColor whiteColor]];
[label setText:self.title];
[label sizeToFit];
[currentItem setTitleView:label];
[label release];
[navBar pushNavigationItem:currentItem animated:NO];
[currentItem release];
[mainView addSubview:navBar];
[navBar release];
self.view = mainView;
[mainView release];
但是,我现在的问题是,即使正确添加了自定义标题视图,它也不会与NavBar垂直居中。我缺少什么?
谢谢!
答案 0 :(得分:98)
您可以在iOS 5中使用setTitleVerticalPositionAdjustment:forBarMetrics:
来更改标题位置,它适用于普通标题,例如:
CGFloat verticalOffset = -4;
[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:verticalOffset forBarMetrics:UIBarMetricsDefault];
答案 1 :(得分:0)
当标准UINavigationBar
有44分时,您创建了高度为80分的UINavigationBar
。它可能将它定位在一个44点的中心......
您可以尝试制作一个高度为80分的UIView
并在其中心添加UILabel
。 (未经测试,只是猜测)