2010-12-01 31 views
1

ナビゲーションバーのタイトルの横にアイコンを配置したいと思います。私はカスタムのtitleViewとして実装したくないので、スタック上に置かれた各コントローラのカスタムtitleViewを作成する必要があるからです(かなり深いネストがあります)。現在、ナビゲーションバーにUIImageViewとして追加しています。私の問題は、このアイコンの水平位置を正確に計算することです。戻るボタンの幅にもよりますが、これにはそれぞれ別のタイトルがあります。このバックボタンフレームはどのようにして計算できますか?グーグルでは、合理的な結果は得られないようです。ナビゲーションバーの戻るボタンとタイトルの間にアイコンを追加

あなたは あなたのそれのテキストとボタンが上に追加します何の実験で、ラベルのサイズを計算することができ、事前

答えて

0

に感謝を...

CGSize s = [label sizeWithFont:_font]; 
+0

あなたはバックボタンのラベルの幅をとることを意味します。私はもっ​​と標準的なアプローチがあるかもしれないと思った... –

0

私はこの同じ問題に遭遇しました。私の解決策は、アイコンをleftBarButtonItemの1つとして、柔軟なスペースの後に追加することでした。これはそれをタイトルに押し付ける。

UIBarButtonItem *space = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease]; 
UIView *icon = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"titleIcon"]] autorelease]; 
UIBarButtonItem *iconItem = [[[UIBarButtonItem alloc] initWithCustomView:icon] autorelease]; 
NSArray *items = [NSArray arrayWithObjects: space, iconItem, nil]; 
self.navigationItem.leftBarButtonItems = items; 
self.navigationItem.leftItemsSupplementBackButton = YES; 

それは二つの方法で、しかし、カスタムtitleViewを作成するのとまったく同じではありません:(1)タイトルテキストではなく、一緒にタイトルやアイコンを中心とするよりも、その左にあるアイコンで、可能な場合は中心のまま; (2)新しいビューをスタックにプッシュすると、アイコンはタイトルと共に左にスライドしません。その代わりに、他のバーのボタン項目のように消えます。

お客様の要件に応じて、この解決法が機能する場合もあれば、うまくいかない場合もあります。しかし、少なくとも、カスタムタイトルビューで標準のタイトルテキスト属性と一致させようとするのは避けてください。 (私が知る限りでは、自動的にそれを行う方法はありません)

関連する問題