我已经设置了UINavigationBar titleView,如下所示:
UIView *labelView=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 255, 40)];
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 200, 40)];
[label setTextColor:[UIColor whiteColor]];
label.lineBreakMode=UILineBreakModeWordWrap;
label.numberOfLines=0;
label.shadowColor = [UIColor colorWithRed:0.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:0.25f];
label.shadowOffset = CGSizeMake(0.0f, -1.0f);
label.textAlignment = UITextAlignmentCenter;
label.adjustsFontSizeToFitWidth=YES;
[label setBackgroundColor:[UIColor clearColor]];
switch (genreId) {
case 1:
label.text=@"Music";
self.navigationItem.titleView =label;
break;
case 3:
label.text=@"Family";
break;
case 6:
label.text=@"Literature";
break;
case 7:
label.text=@"Theatre";
break;
default:
label.frame=CGRectMake(0, 0, 255, 40);
label.text=ArtistName;
break;
}
[label setFont:[UIFont boldSystemFontOfSize:20.0]];
[labelView addSubview:label];
[self.navigationItem setTitleView:labelView];
[label release];
现在我想更新UINavigationBar的高度,因为在我们增加UINavigationBar的高度之前,标题视图中的自动换行不会显示。我可以这样做吗?
答案 0 :(得分:3)
使用此代码.....并冷静......
NSString *summary;
summary = @" your title";
// define font size what ever you want....
CGSize s = [summary sizeWithFont:[UIFont systemFontOfSize:30]
constrainedToSize:CGSizeMake(self.view.bounds.size.width - 40, MAXFLOAT) // - 40 For cell padding
lineBreakMode:UILineBreakModeWordWrap];
CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, s.height);
[self.navigationController.navigationBar setFrame:frame];
希望,它会帮助你...
答案 1 :(得分:0)
我认为您必须使用自定义图像创建自定义UINavigationBar,然后您可以随心所欲。
答案 2 :(得分:-1)
试试这个,
@implementation UINavigationBar (CustomHeight)
- (void)layoutSubviews {
[super layoutSubviews];
CGRect barFrame = self.frame;
barFrame.size.height = height;
self.frame = barFrame;
}
@end