【问题标题】:Can't find UI_APPEARANCE_SELECTOR anywhere在任何地方都找不到 UI_APPEARANCE_SELECTOR
【发布时间】:2012-06-19 15:45:45
【问题描述】:

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?

【问题讨论】:

    标签: ios uiappearance


    【解决方案1】:

    -[UIButton setBackgroundImage:resizableImageWithCapInsets:] 不是属性而是方法。因此,Apple 文档中的引用仍然有效。

    UI_APPEARANCE_SELECTOR 是一个简单的#define,我想只是提示编译器使用@property 做一些特殊的事情。

    【讨论】:

    • UI_APPEARANCE_SELECTED 很简单#define 到无,但据我了解文档,它应该在那里让用户知道他们可以使用哪些方法以及他们不能使用外观代理。
    【解决方案2】:

    您找不到它,因为访问器继承自 UIViewUIButton 继承自;UIControlUIViewUIResponderNSObject)。 因此,当您执行[UIButton appearance] 时,您将获得传递类的外观代理,因为UIView 采用了UIAppearanceUIAppearanceContainer 协议。我希望这是有道理的。

    PS。如果您查看例如UIBarButtonItem 的头文件,您会看到UI_APPEARANCE_SELECTOR 在那里。

    【讨论】:

    • 在 UIView 中没有 backgroundImage 的属性 e 没有用 UI_APPEARANCE_SELECTOR 标记的属性
    • @Alladinian:谢谢,就是这样 :) 我在 UIBarButtonItem 的头文件中找到了它:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 2018-06-20
    • 2016-08-05
    • 2023-03-16
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多