我有几个具有相同视觉处理的UILabel
。我不想每次都重新定义每个属性,而是考虑只复制实例并更改文本。应该这样做吗?
另一种方法是创建工厂方法,但我不太喜欢这个想法。
最佳答案
如果你愿意学习Three20,你可以使用TTLabel
类,它与Three20的样式表系统结合在一起,基本上是为了解决你的问题而设计的。然而,我个人在解析 Three20 的所谓文档时遇到了麻烦,所以我认为学习使用这个库只是为了解决你的问题是很大的开销。
我解决这个问题的方法是组合一个迷你工厂方法,如下所示:
// Example:
- (UILabel *)makeLabel {
UILabel *label = [[[UILabel alloc] init] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont systemFontOfSize:kMyFontSize];
label.textColor = [UIColor blueColor];
label.textAlignment = UITextAlignmentCenter;
[self.view addSubview:label];
return label;
}
然后当我使用这个方法时,其他代码变得更干净:
UILabel *nameLabel = [self makeLabel];
nameLabel.text = userName;
UILabel *titleLabel = [self makeLabel];
titleLable.text = myTitle;
// Both labels have consistent style.
PengOne 建议对 UILabel 进行子类化。这是一个选择,尽管我认为这个工厂方法可以用更少的工作完成这项工作。
关于iphone - 重用 UILabel 样式的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542433/