2017-12-04 4 views
0

私はいくつかのコードをクリーンアップしようとしていましたが、私はビューの外観を使いたいと思っていました。しかし、UIButtonは私を悩ます。私は以下を試した:UIButtonの外観もキーボードボタンを設定します

これは予想どおりで、私のすべてのボタンは青色で赤色に変わった(私のプロジェクトでは他の色を使った)。

[[UIButton appearanceWhenContainedInInstancesOfClasses:@[[UINavigationBar class], [UIViewController class]]] setBackgroundColor:[UIColor clearColor]]; 

しかし、これらはボタンだけではありません。また、私はむしろので、この最初の問題を修正し、この行を追加する必要はありませ何かである、有効ナビゲーションバーのボタンに気づきました。 iPadのキーボードボタン(元に戻す、やり直し、貼り付け)にもデフォルト以外の外観があります。私がこれを解決できる方法はありますか?また、他のビュー(この場合はキーボードボタンのようなもの)を「壊す」ことなく安全に使える外観のリストはありますか?私はこれを見つけたので、すべての外見からリストを話すわけではありませんhere

私のUIViewController(ナビゲーションバーも含まれています)のボタンだけを選択するというアイデアがありましたが、明らかにキーボードもUIViewControllerの子です。私はボタンの周りにカスタムビューやラッパーを追加する必要がない方法があることを願っています。

答えて

1

MyBaseViewControllerをUIViewControllerのサブクラスとして作成します。空の実装です。すべてのviewControllerをMyBaseViewControllerから継承するように変更します。 appearanceWhenContainedInInstancesOfClassesメソッドの呼び出しをMyBaseViewControllerを参照するように変更します。

あなたの現在のコードは、UIViewControllerのすべてのインスタンス(FoundationまたはUIKitに組み込まれているものを含む)に影響します。独自の基本クラスを使用することで、実際にはviewControllersを他と区別するフィルタを作成しています。

+1

これは実際に私が避けようとしていたことです。すべてのUIViewControllerをサブクラス化していましたが、これは現在持っていたものです。スーパークラス(BrandedViewController)が実際にすべての要素をブランディングするためのメソッドを持っていたので、このソリューションは私の実際の実装よりもきれいです。さらに、UINavigationControllerのUIButtonをリセットする必要はありません。しかし、実際のUIViewControllerのすべての要素に対して他のセレクタはありません。 – Sietse

関連する問題