2012-04-16 78 views
0

我已經設置UINavigationBar的titleview的下面給出:如何根據TitleView中文本的長度來設置UINavigationBar的高度?

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: 
     [email protected]"Music"; 
     self.navigationItem.titleView =label; 
     break; 
     case 3: 
     [email protected]"Family"; 
     break; 
     case 6: 
     [email protected]"Literature"; 
     break; 
     case 7: 
     [email protected]"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

導航欄的高度不能被默認增加。爲此進行子類化。 http://stackoverflow.com/questions/892905/change-iphone-navigation-bars-height – tipycalFlow 2012-04-16 10:21:26

+0

更好地製作圖像,並將該圖像添加到UINavigationBar。 – Krunal 2012-04-16 10:27:25

+0

默認導航欄高度44像素h – Deepesh 2012-04-16 10:33:47

回答

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]; 

希望,它會幫助你...

+0

感謝您的解決方案。它工作完美,但有一個問題增加導航欄的高度隱藏它下面的意見,如表視圖或搜索欄等。 – Warewolf 2012-04-18 11:22:55

0

我認爲你必須創建一個自定義UINavigationBar與自定義圖像,然後你可以做任何你想做的。

-1

試試這個,

@implementation UINavigationBar (CustomHeight) 

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    CGRect barFrame = self.frame; 
    barFrame.size.height = height; 
    self.frame = barFrame; 
} 

@end 
+2

你不應該使用類別來覆蓋你不擁有的方法 – 2012-04-16 11:18:15

+0

如果你覆蓋這些方法(你不擁有的方法),你會被禁止從應用商店?提前致謝。 – nluo 2012-12-18 06:01:59

相關問題