重复使用UILabel风格的正确方法是什么?

pix*_*eak 2 iphone objective-c uilabel ios

我有几个UILabel具有相同视觉处理的s.我不是每次都重新定义每一个属性,而是考虑复制一个实例并更改文本.这是怎么做的?

另一种方法是创建一个工厂方法,但我不喜欢这个想法.

Tyl*_*ler 6

如果你愿意学习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;
}
Run Code Online (Sandbox Code Playgroud)

然后,当我使用此方法时,其他代码变得更清晰:

UILabel *nameLabel = [self makeLabel];
nameLabel.text = userName;
UILabel *titleLabel = [self makeLabel];
titleLable.text = myTitle;
// Both labels have consistent style.
Run Code Online (Sandbox Code Playgroud)

PengOne建议继承UILabel.这是一个选择,虽然我认为这种工厂方法能够以更少的工作完成工作.