关于iOS协议参考的UIAppearanceContainer文档说:
“若要参与外观代理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?
发布于 2012-06-19 16:11:37
您无法找到它,因为访问器是从UIView继承的(UIButton继承自;UIControl:UIView:UIResponder:NSObject)。因此,在执行[UIButton appearance]时,只因为UIView采用了UIAppearance和UIAppearanceContainer协议,就可以获得传递类的外观代理。我希望这是有意义的。
PS。如果您查找例如UIBarButtonItem的头文件,您将看到UI_APPEARANCE_SELECTOR在那里。
发布于 2012-06-19 15:54:28
-[UIButton setBackgroundImage:resizableImageWithCapInsets:]不是一个属性,而是一个方法。因此,来自Apple文档的引用仍然有效。
UI_APPEARANCE_SELECTOR是一个简单的#define,我认为它只是编译器使用@属性执行一些特殊操作的一个提示。
https://stackoverflow.com/questions/11104622
复制相似问题