2013-08-20 356 views
5

我想在導航欄中使用兩個UILabels而不是一個。ios標題和字幕在導航欄中居中

我跟着這個鏈接,就如何做到這一點的信息: iPhone Title and Subtitle in Navigation Bar

它運作良好,但我不能讓我的文字要正確居中。 它位於按鈕之間,但是默認的標題行爲是在時間的下方居中。

enter image description here

我在這裏一看,同樣的問題,但沒有答案: UINavigationBar TitleView with subtitle

我缺少什麼? 這裏是我的代碼:

CGRect headerTitleSubtitleFrame = CGRectMake(0, 0, 200, 44); 
UIView* _headerTitleSubtitleView = [[UILabel alloc] initWithFrame:headerTitleSubtitleFrame]; 
_headerTitleSubtitleView.backgroundColor = [UIColor clearColor]; 
_headerTitleSubtitleView.autoresizesSubviews = NO; 

CGRect titleFrame = CGRectMake(0, 2, 200, 24); 
UILabel *titleView = [[UILabel alloc] initWithFrame:titleFrame]; 
titleView.backgroundColor = [UIColor clearColor]; 
titleView.font = [UIFont boldSystemFontOfSize:20]; 
titleView.textAlignment = NSTextAlignmentCenter; 
titleView.textColor = [UIColor whiteColor]; 
titleView.shadowColor = [UIColor darkGrayColor]; 
titleView.shadowOffset = CGSizeMake(0, -1); 
titleView.text = @"Title"; 
titleView.adjustsFontSizeToFitWidth = YES; 
[_headerTitleSubtitleView addSubview:titleView]; 

CGRect subtitleFrame = CGRectMake(0, 24, 200, 44-24); 
UILabel *subtitleView = [[UILabel alloc] initWithFrame:subtitleFrame]; 
subtitleView.backgroundColor = [UIColor clearColor]; 
subtitleView.font = [UIFont boldSystemFontOfSize:13]; 
subtitleView.textAlignment = NSTextAlignmentCenter; 
subtitleView.textColor = [UIColor whiteColor]; 
subtitleView.shadowColor = [UIColor darkGrayColor]; 
subtitleView.shadowOffset = CGSizeMake(0, -1); 
subtitleView.text = @"Subtitle"; 
subtitleView.adjustsFontSizeToFitWidth = YES; 
[_headerTitleSubtitleView addSubview:subtitleView]; 

self.navigationItem.titleView = _headerTitleSubtitleView; 

回答

10

你應該同時調整幀的寬度。它應該低於200.試試這個。

CGRect titleFrame = CGRectMake(0, 2, 160, 24); 
CGRect subtitleFrame = CGRectMake(0, 24, 160, 44-24); 

編輯:您左側的後退更寬,titleview右移。

請看寬度爲200像素 enter image description here

我建議你調整titleview的寬度,並標示出相應的圖像和寬度160像素 enter image description here

圖像。

如果您想了解更多關於後扣寬度的信息,請參閱此處的討論。 SO Post 1.

SO Post 2.

+0

非常感謝!它現在有效。但我不明白。爲什麼當給定尺寸更高時它不居中? – user2700551

+0

它不適用於所有不同的情況。雖然它適用於此後退按鈕,但左側的後退按鈕可以更寬,標題向右移動。 – user2700551

+0

文字始終以標籤爲中心。所以你應該相應地調整標籤的寬度。如果爲測試標籤設置了backgroundcolor,那麼你會得到清晰的想法。如果你能夠接受並且贊同答案,那麼它會非常可觀。 –

1

你可能喜歡UINavigationItem類此屬性。

@property (nonatmic,copy) NSString *prompt

它很優雅。

+3

但這增加了整個導航欄的高度。它在標題之上,而不是在它之下。 –