1

UIAppearanceContainerProtocol Referenceの iOS ドキュメントには、次のように記載されています。

「外観プロキシ API に参加するには、ヘッダーの外観プロパティ アクセサー メソッドに UI_APPEARANCE_SELECTOR をタグ付けします。」

しかし、たとえば、UIButton.h を開くと、どこUI_APPEARANCE_SELECTORにも見つかりませんが、次のようなものを問題なく使用できます。

    [[UIButton appearance] setBackgroundImage:[[UIImage imageNamed:@"UIButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(5.0, 5.0, 5.0, 5.0)] forState:UIControlStateNormal];

何が起こっているのか誰か教えてくれませんか :D ?

4

2 に答える 2

2

-[UIButton setBackgroundImage:resizableImageWithCapInsets:]プロパティではなくメソッドです。そのため、Apple のドキュメントからの引用は引き続き有効です。

UI_APPEARANCE_SELECTOR は単純な #define であり、コンパイラが @property で特別なことを行うためのヒントにすぎないと思います。

于 2012-06-19T15:54:28.690 に答える
1

アクセサーがから継承されているため、見つけることができませんUIViewUIButton継承元; UIControl: UIView: UIResponder: NSObject)。とプロトコルを採用している[UIButton appearance]という理由だけで、渡されたクラスの外観プロキシを取得します。これが理にかなっていることを願っています。UIViewUIAppearanceUIAppearanceContainer

PS。example のヘッダー ファイルを探すと、そこにあるUIBarButtonItemことがわかりますUI_APPEARANCE_SELECTOR

于 2012-06-19T16:11:37.403 に答える