Tech Talk 2011 で、新しいUIAppearance
プロトコルに関するスピーチを見ました。まだ多くのドキュメントはありません。私の質問がどこから来たのかを説明するために覚えていることを簡単に要約します。
約UIAppearance
:
これまでは、すべてのアプリ ビュー コントローラーですべてのナビゲーション バー (ツールバーなど) のプロパティをカスタマイズする必要がありました。新しい外観プロパティを使用すると、アプリ内のすべてのナビゲーション バーを 1 か所で行うことができます。たとえば、ナビゲーション バーの背景画像をカスタマイズする場合は、次のようにします。
[[UINavigationBar appearance] setBackgroundImage:
[UIImage imageNamed:@"MyImageName"] forBarMetrics:UIBarMetricsDefault];
これにより、アプリケーション内のすべてのナビゲーション バーの背景画像が設定されます。を使用しbarMetrics
て、画像を横向きモードでも使用するかどうかを指定します。
一部のView Controllerにのみ適用されるように外観を指定したい場合は、オブジェクトの場所を指定することでそれを制御する方法がドキュメントにあります。
[[UIBarButtonItem appearanceWhenContainedIn:
[ABPeoplePickerNavigationController class], nil] setTintColor:myNavBarColor];
また、言及する価値があるのは、外観設定とは異なる単一のカスタマイズされたインスタンスがある場合、これらのインスタンスは外観プロキシの影響を受けないことです。
いくつかの質問:
a) クラスのどのプロパティがアピアランス プロパティで機能するかを知るにはどうすればよいですか? たとえばUITableView
、UIAppearance プロトコルに準拠しているため、次のようなことができると考えていました。
[[UITableView appearance] setBackgroundColor:mytableViewColor];
すべてのテーブル ビューの背景色を操作できますが、できません!
b) 外観プロパティで操作可能なすべてのクラスのリストはありますか?
c) 外観のカスタマイズはどの時点で呼び出されますか? 実行時に外観プロパティをスローして変更を加えたいと思っていましたが、残念ながら変更は行われていません。