如何根据TitleView中文本的长度设置UINavigationBar的高度?

时间:2012-04-16 10:13:22

标签: iphone objective-c ios

  

我已经设置了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的高度之前,标题视图中的自动换行不会显示。我可以这样做吗?

3 个答案:

答案 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