字体和 textColor 消失了 - 又一个 UITableViewCell awakeFromNib

Posted

技术标签:

【中文标题】字体和 textColor 消失了 - 又一个 UITableViewCell awakeFromNib【英文标题】:Font and textColor are gone - Yet another UITableViewCell awakeFromNib 【发布时间】:2012-12-19 16:49:51 【问题描述】:

我不知道这是否特定于 UITableViewCells 而是一般用于 UIViews(我相信),但我注意到一个单元格的 问题

如前所述,我有一个自定义的UITableViewCell 子类,它在使用指定的 init 初始化时从 xib 加载自身:

- (id)initWithReuseIdentifier:(NSString *)reuseIdentifier

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:nil options:nil];
    self = nib[0];
    if (self) 
        // Initialization code
        _reuseIdentifier = reuseIdentifier;
    
    return self;

它有一个UILabel 作为出口,我在awakeFromNib 方法中设置了它的一些属性:

- (void)awakeFromNib
    [super awakeFromNib];

    self.labelLeft.textColor = [UIColor grayColor];
    self.labelLeft.font = [UIFont boldSystemFontOfSize:15.0f];

关键是,标签不保留 textColor 和字体,我不明白为什么。awakeFromNib 被调用并且插座连接正确,因为我可以设置文本。

在我在UITableViewDataSource 中设置他的文本后,我可以通过设置这些属性使其工作,但我觉得这不是正确的方法,我想了解为什么这不起作用。

问题: 为什么它不保留 Font 和 Textcolor,我该怎么做才能让它以正确的方式工作?

【问题讨论】:

“从 xib 加载自身” - 这就是问题所在。我敢打赌,如果您以编程方式创建单元格,它会起作用。 是的,如果我全部通过代码完成,它肯定会奏效。但我想知道为什么这不起作用。 嗯,它有点工作。它只是不保留颜色和字体... 我也有同样的问题。是的,我可以在单元格的每个更新方法中设置新的字体和颜色,但我不会只设置一次。 我找到了问题所在。尝试在答案中解释更多细节。 【参考方案1】:

我从.Nib 加载的所有标签都有同样的问题。然后我发现问题出在UIAppearance。我的AppDelegate 中有以下行:

+ (void)styleApplication 
    [[UILabel appearance] setFont:[MGStylesheet defaultLightFontOfSize:17]];

此方法更新我的应用程序中的所有字体,一切正常,直到我开始从.Nib 加载我的UIView。当我删除它时,一切都开始按预期工作。

【讨论】:

是的,当然是 UIAppearance!只需在调用 super 后将代码放入 -layoutSubviews 即可。完全有道理!【参考方案2】:

在 nib 文件中设置标签的属性。如果您将接口配置拆分到不同的地方,这只会导致崩溃。

如果您不想这样做,请将标签的配置移动到 viewDidLoad:

【讨论】:

我的问题是为什么它不起作用,不是我还能做什么。

以上是关于字体和 textColor 消失了 - 又一个 UITableViewCell awakeFromNib的主要内容,如果未能解决你的问题,请参考以下文章

使用Selector改变TextView的字体颜色textColor的方法

Xcode字体消失了

显示隐藏小代码

tabBarItem是模型,只有控件才有textColor属性

mfc中我调用showwindow函数显示一个对话框,显示了,但是又瞬间消失了,这是啥情况啊?求解~~

android 在xml的textStyle中 如何设置一个字体即是粗体又是斜体又带有下划线?