UIAppearanceContainer
协议参考的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?
答案 0 :(得分:2)
-[UIButton setBackgroundImage:resizableImageWithCapInsets:]
不是属性,而是一种方法。因此Apple文档的引用仍然有效。
UI_APPEARANCE_SELECTOR是一个简单的#define,我想这只是编译器用@property做一些特殊内容的提示。
答案 1 :(得分:1)
您无法找到它,因为访问者是继承自UIView
(UIButton
继承自; UIControl
:UIView
:UIResponder
:{{1 }})。
因此,当您执行NSObject
时,您将获得传递的类的外观代理,因为[UIButton appearance]
采用UIView
和UIAppearance
协议。我希望这是有道理的。
PS。如果您查找示例UIAppearanceContainer
的头文件,您会看到UIBarButtonItem
就在那里。