UIView(QMUITheme)

@interface UIView (QMUITheme)

/**
 注册当前 view 里需要在主题变化时被重新设置的 property,当主题变化时,会通过 qmui_themeDidChangeByManager:identifier:theme: 来重新调用一次 self.xxx = xxx,以达到刷新界面的目的。
 @param getters 属性的 getter, 内部会根据命名规则自动转换得到 setter,再通过 performSelector 的形式调用 getter 和 setter
 */
- (void)qmui_registerThemeColorProperties:(NSArray<NSString *> *)getters;

/**
 注销通过 qmui_registerThemeColorProperties: 注册的 property
 @param getters 属性的 getter, 内部会根据命名规则自动转换得到 setter,再通过 performSelector 的形式调用 getter 和 setter
 */
- (void)qmui_unregisterThemeColorProperties:(NSArray<NSString *> *)getters;

/**
 当主题变化时这个方法会被调用,通过 registerThemeColorProperties: 方法注册的属性也会在这里被更新(所以记得要调用 super)。registerThemeColorProperties: 无法满足的需求可以重写这个方法自行实现。
 @param manager 当前的主题管理对象
 @param identifier 当前主题的标志,可自行修改参数类型为目标类型
 @param theme 当前主题对象,可自行修改参数类型为目标类型
 */
- (void)qmui_themeDidChangeByManager:(nullable QMUIThemeManager *)manager identifier:(nullable __kindof NSObject<NSCopying> *)identifier theme:(nullable __kindof NSObject *)theme NS_REQUIRES_SUPER;

@property(nonatomic, copy, nullable) void (^qmui_themeDidChangeBlock)(void);

@end

Undocumented

  • 注册当前 view 里需要在主题变化时被重新设置的 property,当主题变化时,会通过 qmui_themeDidChangeByManager:identifier:theme: 来重新调用一次 self.xxx = xxx,以达到刷新界面的目的。

    Declaration

    Objective-C

    - (void)qmui_registerThemeColorProperties:
        (nonnull NSArray<NSString *> *)getters;

    Swift

    func qmui_registerThemeColorProperties(_ getters: [String])

    Parameters

    getters

    属性的 getter, 内部会根据命名规则自动转换得到 setter,再通过 performSelector 的形式调用 getter 和 setter

  • 注销通过 qmui_registerThemeColorProperties: 注册的 property

    Declaration

    Objective-C

    - (void)qmui_unregisterThemeColorProperties:
        (nonnull NSArray<NSString *> *)getters;

    Swift

    func qmui_unregisterThemeColorProperties(_ getters: [String])

    Parameters

    getters

    属性的 getter, 内部会根据命名规则自动转换得到 setter,再通过 performSelector 的形式调用 getter 和 setter

  • 当主题变化时这个方法会被调用,通过 registerThemeColorProperties: 方法注册的属性也会在这里被更新(所以记得要调用 super)。registerThemeColorProperties: 无法满足的需求可以重写这个方法自行实现。

    Declaration

    Objective-C

    - (void)qmui_themeDidChangeByManager:(nullable QMUIThemeManager *)manager
                              identifier:(nullable __kindof NSObject<NSCopying> *)
                                             identifier
                                   theme:(nullable __kindof NSObject *)theme;

    Swift

    func qmui_themeDidChange(by manager: QMUIThemeManager?, identifier: (NSCopying & NSObjectProtocol)?, theme: NSObject?)

    Parameters

    manager

    当前的主题管理对象

    identifier

    当前主题的标志,可自行修改参数类型为目标类型

    theme

    当前主题对象,可自行修改参数类型为目标类型

  • Undocumented

    Declaration

    Objective-C

    @property(nonatomic, copy, nullable) void (^qmui_themeDidChangeBlock

    Swift

    var qmui_themeDidChangeBlock: (() -> Void)? { get set }