9

barTintColorプロパティを緑色に設定する外観プロキシがありますUINavigationBar

[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:54./255 green:165./255 blue:53./255 alpha:1]];

必要に応じて、これをオーバーライドしますappearanceWhenContainedIn:

[[UINavigationBar appearanceWhenContainedIn:[INFSearchViewController class], nil] setBarTintColor:[UIColor colorWithWhite:0.80 alpha:1]];

これはうまくいきます。

ただし、提示するMFMessageComposeViewControllerと、プロキシに準拠し、UINavigationBar次のようになります。

ここに画像の説明を入力

明らかにひどいように見えMFMessageComposeViewControllerますが、プロキシに固執するのではなく、やろうとしています

[[UINavigationBar appearanceWhenContainedIn:[MFMessageComposeViewController class], nil] setBarTintColor:[UIColor whiteColor]];

影響はありません。

ここで私はどのような行動を取るべきですか?

4

2 に答える 2

6

ハックな方法: 外観をデフォルトの白に戻し、モーダルを提示し、モーダルが戻ったときに外観をスタイル付きに設定します。

または、あなたの考えを逆にしてください。グローバルな外観をデフォルトのままにします。次に、適切な場所にスタイル付きのナビゲーション バーを選択的に適用できます。

「適切な場所」がアプリの 90% になる場合は、UIViewController (またはよく使用するビュー コントローラー) の薄いサブクラスを設定し、外観が必要な場所でそれを使用します。

[[UINavigationBar appearanceWhenContainedIn:[MyStyledViewController class], nil] 
  setBarTintColor:[UIColor colorWithRed:54./255 green:165./255 blue:53./255 alpha:1]];

そして、各 .h ファイルで、ビュー コントローラーのスーパークラスをMyStyledViewControllerプレーンな古いものではなくに設定しますUIViewController

于 2013-09-26T19:00:54.787 に答える
5

掘り下げていくつかの異なる提案を試した後、私は UINavigationController サブクラスを使用した、ハックではない素敵なソリューションにたどり着きました。

これにより、外観プロキシを使用して必要なすべてのナビゲーション バーのスタイルを一度に設定できます。ただし、 iOS のコア機能を使用していることをユーザーに伝えるために標準の外観にしたいMFMessageComposeViewControllerとを除きます。MFMailComposeViewController

1 -UINavigationControllerサブクラスを作成します。

2 - 以前と同じように外観プロキシを使用してナビゲーション バーのスタイルを設定しますが、今度は AppearanceWhenContainedIn を使用します。

[[UINavigationBar appearanceWhenContainedIn:[KCStyledNavController class], nil] setBarTintColor:[UIColor redColor]];
[[UINavigationBar appearanceWhenContainedIn:[KCStyledNavController class], nil] setTintColor:[UIColor whiteColor]];

3 - ストーリーボードに移動し、UINavigationControllersスタイルを設定したいすべてを選択して、カスタム クラスをスタイル設定されたクラスに変更します。

于 2014-09-02T06:32:43.343 に答える