3

外観プロキシを使用してアプリのスタイルを設定していますが、[UIBarButtonItem の外観] に問題があります。一番上の UINavigationbar のボタンのみスタイルを設定したいのですが、以下のコードを実行すると、同じスタイルがキーボードの完了ボタンにも適用されます。

NSDictionary *btnAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                              [UIColor blackColor],
                              UITextAttributeTextColor,
                              [UIColor clearColor],
                              UITextAttributeTextShadowColor, nil];

[[UIBarButtonItem appearance] setTitleTextAttributes: btnAttributes
                                            forState: UIControlStateNormal];

スタイルはキーボードの完了ボタンに適用されます

それで、私の質問は次のとおりです。外観プロキシを使用して、上部のナビゲーションバーのバーボタンのみをスタイルすることは可能ですか?

4

1 に答える 1

4

外観を特定のコンテナ クラスに制限できます。外観参考より:

appearanceWhenContainedIn:

特定の包含階層内のレシーバーの外観プロキシを返します。(必要)

+ (id)appearanceWhenContainedIn:(Class <UIAppearanceContainer>)ContainerClass,...

パラメータ ContainerClass、外観コンテナ クラスの nil 終了リスト。戻り値 特定の包含階層内のレシーバーの外観プロキシ。

説明 このメソッドは、 UIAppearanceContainer プロトコルに準拠する Class オブジェクトではない var-args リスト内の項目に対して例外をスローします。

提供状況 iOS 5.0 以降で利用可能です。


あなたの例では、それは次のようになります。

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
                     setTitleTextAttributes:btnAttributes
                                   forState:UIControlStateNormal];
于 2013-03-09T21:41:56.843 に答える