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

Iphone 重复使用UILabel'的正确方法是什么;什么样的风格?,iphone,ios,objective-c,uilabel,Iphone,Ios,Objective C,Uilabel,我有几个UILabels具有相同的视觉处理。我不想每次都重新定义每个属性,而是想复制一个实例并更改文本。应该这样做吗 另一种方法是创建一个工厂方法,但我不太喜欢这个想法。您似乎想将UILabel子类化,使其默认为您的首选项。这很简单。在Xcode(和Objective C类)中创建一个名为CustomLabel(或任何您喜欢的)的新文件 CustomLabel.m: #import <UIKit/UIKit.h> @interface CustomLabel : UILabel {

我有几个
UILabel
s具有相同的视觉处理。我不想每次都重新定义每个属性,而是想复制一个实例并更改文本。应该这样做吗


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

您似乎想将
UILabel
子类化,使其默认为您的首选项。这很简单。在Xcode(和Objective C类)中创建一个名为
CustomLabel
(或任何您喜欢的)的新文件

CustomLabel.m:

#import <UIKit/UIKit.h>

@interface CustomLabel : UILabel {
}

@end
如果这看起来有些过分,那么您可以在ViewController中创建一个方法来进行自定义:

-(void)customizeLabel:(UILabel *)label {
    // CUSTOMIZATION HERE
}

然后在您创建的任何标签上调用它。

如果您愿意学习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子类化。这是一个选择,尽管我认为这种工厂方法可以用更少的工作量完成工作。

方法/功能/宏:你选-当我在InterfaceBuilder中创建它们时,我肯定会复制它们,但我不想在代码中这样做(从来都不是“原型”爱好者)-但我基本上避免在代码中创建UILabel。附录:我有
UITableViewCell
的子类,这些子类在六个方面修改它们所包含的
UITextField
s(当切换到编辑模式或退出编辑模式时)-复制不会在那里剪切它,我认为样式的数量不足以保证一个子类。它实际上只是颜色/背景/字体/shadow@pixelfreak:如果您想多次使用它,并且希望能够在以后应用通用更改,那么这是最好的方法。否则,您每次都必须复制和粘贴相同的代码,这很好,但这不会产生太大的开销。PS如果您使用这样的代码,请不要忘记在某个地方设置标签的框架。谢谢@Tyler。我对320很好奇。有些人说这是一种过分的做法,但该网站说,你可以选择包含哪个模块。
UILabel *nameLabel = [self makeLabel];
nameLabel.text = userName;
UILabel *titleLabel = [self makeLabel];
titleLable.text = myTitle;
// Both labels have consistent style.