1

ナビゲーション バーのタイトルの横にアイコンを配置したいと考えています。カスタムの titleView として実装したくないのは、スタックに配置したコントローラーごとにカスタムの titleView を作成する必要があるためです (そして、かなり深いネストがあります)。現在、UIImageView として navigationBar に追加しています。私の問題は、このアイコンの水平位置を正確に計算することです。毎回別のタイトルを持つ戻るボタンの幅に依存します。この戻るボタンのフレームを計算するにはどうすればよいですか? グーグルで検索しても、妥当な結果は得られないようです。

前もって感謝します

4

2 に答える 2

0

テキストを含むラベルのサイズを計算し、ボタンが何を追加するかを試すことができます。

CGSize s = [label sizeWithFont:_font];
于 2010-12-08T13:52:52.237 に答える
0

この同じ問題に遭遇しました。私の解決策は、柔軟なスペースの後に、アイコンを leftBarButtonItems の 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 を作成するのとはまったく同じではありません。次の 2 つの点があります。(1) 可能であればタイトル テキストを中央に配置し、タイトルとアイコンを一緒に中央に配置するのではなく、アイコンを左側に配置します。(2) 新しいビューをスタックにプッシュすると、アイコンはタイトルとともに左にスライドしません。代わりに、他のバー ボタン アイテムと同様にフェード アウトします。

したがって、要件に応じて、このソリューションが機能する場合と機能しない場合があります。ただし、少なくとも、カスタム タイトル ビューで標準のタイトル テキスト属性を一致させようとすることは避けられます。(私が発見できる限り、それを自動的に行う方法はありません。)

于 2013-10-27T23:38:24.410 に答える