2013-08-20 10 views
5

ナビゲーションバーに2つのUILabelsを1つではなく2つ持っています。ナビゲーションバーのタイトルとサブタイトルが中央に配置されています

私はそれを行う方法についての情報を持っているために、このリンクをたどっ: 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); 

編集:左のバックボタンが広くなり、タイトルビューが右に移動します。

幅200pxの幅160ピクセル enter image description here

enter image description here

と画像で画像を見てください、私はあなたがtitleviewの幅を調整し、それに応じてラベルを付けることをお勧め。

バックボタンの幅について詳しく知りたい場合は、こちらの説明を参照してください。 SO Post 1.

SO Post 2.

+0

ありがとうございます!それは今働く。しかし、私はそれを取得しません。与えられた次元がより高いとき、なぜそれが中央にないのですか? – user2700551

+0

これはすべての異なるケースで機能していません。この戻るボタンのために働きますが、左の私の後ろボタンはより広いことができ、タイトルは右にシフトされます。 – user2700551

+0

常にテキストはラベルの中央に配置されます。それに応じてラベル幅を調整する必要があります。テスト用のラベルにbackgroundcolorを設定すると、明確なアイデアが得られます。また、それがあなたを助けたように答えを受け入れてアップヴォートすることができれば、それは非常に感謝しています。 –

1

あなたはUINavigationItemクラスでこのプロパティを好むことがあります。

@property (nonatmic,copy) NSString *prompt

それはエレガントです。

+3

しかし、これはnavbar全体の高さを増やします。それはタイトルの上にあり、下にはありません。 –

関連する問題