UI_APPEARANCE_SELECTOR无效

时间:2015-09-30 07:44:33

标签: ios objective-c uiappearance

规格:Xcode 7.0.1,iOS到Build 9.0,8.4,Device iPhone

我正在使用UI_APPEARANCE_SELECTOR并尝试在视图中设置颜色和字体的外观。视图添加在NavigationItem的customClass中并具有标题。我想要这个标题将着色并用字体设置样式。导航项中的Custom子类在ViewControllers NavigationItem的Storyboard中设置。

这是我目前的状态: 的AppDelegate。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ...
    [[MySubtitleView appearance] setTitleLabelTextFont:[UIFont systemFontOfSize:14]];
    [[MySubtitleView appearance] setTitleLabelTextColor:[UIColor whiteColor]];
    ...
}

我的SubTitleView的标题

@import UIKit;

@interface MySubtitleView : UIView

@property (nonatomic) UILabel *titleLabel;
@property (nonatomic) UILabel *subtitleLabel;
@property UIColor *titleLabelTextColor UI_APPEARANCE_SELECTOR;
@property UIColor *subtitleLabelTextColor UI_APPEARANCE_SELECTOR;
@property UIFont *titleLabelTextFont UI_APPEARANCE_SELECTOR;
@property UIFont *subtitleLabelFont UI_APPEARANCE_SELECTOR;
@end

在我的类文件中,我将titleLabel添加到视图时执行以下操作:

- (UILabel *)titleLabel
{
    if (_titleLabel) {
        return _titleLabel;
    }
    _titleLabel = [[UILabel alloc] init];
    _titleLabel.textAlignment = NSTextAlignmentCenter;
    _titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
    _titleLabel.textColor = self.titleLabelTextColor;
    _titleLabel.font = self.titleLabelTextFont;
    return _titleLabel;
}

当我运行我的应用程序时,将不会设置外观。我有黑色标题和黑色副标题。我不知道自己做错了什么。

1 个答案:

答案 0 :(得分:1)

我现在找到了解决方案: 加载MySubtitleView时,未设置外观。它在视图加载后设置,但之后什么都不会发生,因为我不关心它。现在我覆盖了titleLabelTextColor的setter并再次将颜色写入标签。这里的外观将设置它,setter会将其添加到textField

- (void)setTitleLabelTextColor:(UIColor *)titleLabelTextColor
{
    _titleLabelTextColor = titleLabelTextColor;
    self.titleLabel.textColor = titleLabelTextColor;
}

修改 我认为这个问题很难,我无法找到任何解决方法,所以我将这个答案标记为正确答案并让它进来。认为不同:)