我不知道这是否特定于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,我该怎么做才能让它以正确的方式工作?
解决方法
对于从.Nib加载的所有标签,我遇到了同样的问题.然后我发现问题出在UIAppearance上.我的AppDelegate中有以下行:
+ (void)styleApplication { [[UILabel appearance] setFont:[MGStylesheet defaultLightFontOfSize:17]]; }
这个方法更新了我的应用程序中的所有字体,一切正常,直到我开始从.Nib加载我的UIView.当我删除它时,一切都按预期开始工作.