0

ナビゲーションコントローラーに埋め込まれたビューコントローラーがあります。したがって、このViewControllerの上部にはナビゲーションアイテムがあります。iOS6ストーリーボードでできることの1つは、このビューコントローラーのタイトル、プロンプト、および戻るボタンを設定できることです(ナビゲーションコントローラーに組み込まれているため)。

そうは言っても、タイトルを指定してアプリをテストすると、すべてが良さそうです。ただし、ナビゲーションアイテム(タイトルの場所など)の上に透明なUIViewを配置すると、タイトル自体が消えてしまいます。InterfaceBuilderに入力したテキスト自体はなくなりました。作成したビューを削除すると、最初に持っていたテキストが失われるため、これを証明しました。

私は実際にインターフェイスビルダーの外でタイトル自体を設定することで問題を解決しようとしました:

self.navigationItem.title=@"My Title";

しかし、それもうまくいかないようです。ナビゲーションコントローラーのnavigationItemの上に透明なUIViewを表示/非表示にする方法について誰かが手がかりを持っていますか?

編集

ナビゲーションコントローラーのツールバーに配置したUI要素は、基になるタイトルテキストが表示されないようです。これは、要素が透明としてマークされ、その要素が非表示に設定されている場合でも発生します。

4

2 に答える 2

1

私の理解では、Interface Builderは、多かれ少なかれ、UIBarButtonItemクラスを使用してプログラムで同じことを行った場合に行うことを模倣しています。ナビゲーションバーのさまざまなアイテムは、UIBarButtonItemクラスのインスタンスです。このクラスには、次の初期化子があります。

– initWithBarButtonSystemItem:target:action:
– initWithCustomView:
– initWithImage:style:target:action:
– initWithTitle:style:target:action:
– initWithImage:landscapeImagePhone:style:target:action:

ナビゲーションコントローラーのタイトルだけがある場合、InterfaceBuilderはそれをinitWithTitle:イニシャライザーを使用するのと同じように扱います。基本的に、これは、内部でUILabelクラスが指定されたタイトルで作成され、UILabelがUIBarButtonItemのビューとして使用されることを意味します。

ただし、透明なビューをタイトルの上にドラッグすると、InterfaceBuilderは代わりにを呼び出すのと同じことを行いinitWithCustomView:ます。これは、提供しているビューがUIBarButtonItemのビューとして使用されていることを意味します。つまり、カスタムビューをタイトルの上にドラッグすると、タイトルの上に配置されません。タイトルを透明なビューに置き換えています。

1つのオプションは、UILabelと透過ビューの両方をサブビューとして持つビューを作成することです。次に、そのビューをナビゲーションバーのタイトルとして配置します。そのUILabelに正しいフォントサイズとシャドウを指定すると、システムのデフォルトのタイトルと見分けがつかなくなり、その上に透明なビューを表示することもできます。

于 2012-12-04T01:18:46.120 に答える
0

IBでは、UIViewをナビゲーションバーの中央にドラッグできます。これにより、デフォルトで存在するtitleViewが置き換えられます(コードでsetTitleView:を使用して実行できます)。背景を明確にし、タイトルを保持するためのラベルを追加すると、デフォルトのタイトルのようになります。次に、他のUIViewの場合と同じように、このビューのサブビューとして別のUIViewを追加できます。

于 2012-12-04T00:28:28.893 に答える