Ziank的技术博客

UILabel的使用

我们都知道UILabel是iOS开发中最常用和最简单的一个组件,可以用来显示文本内容。但是一般来说我们都只是用UILabel现实固定字体、颜色设置的文本,其实我们也可以用UILabel同时显示多种字体和颜色的问题,甚至可以在文字中添加图片进行显示。

UILabel使用的几种方式

下面简单说一下UILabel使用的三种方式,或者说是个人理解的UILabel使用的三种境界吧。

  1. 设置UILabel的字体和颜色,现实特定文本内容。
  2. 通过attributedText在UILabel中显示不同字体和颜色的文本内容,以及在文本之中插入图片。
  3. 通过CoreText重写drawRect在UILabel中显示更为复杂的内容。

1. UILabel的基本使用

对于UILabel,我们平时最常用也是最简单的使用方式就是创建一个label,然后设置其字体和颜色,进行显示就可以了。

1
2
3
4
5
UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 300, 200, 44)];
textLabel.font = [UIFont systemFontOfSize:12];
textLabel.textColor = [UIColor redColor];
textLabel.text = @"Simple Text Label!";
[self.view addSubview:textLabel];

上面的代码就是创建了一个UILabel,显示红色,12号字体的一段文字,实际结果如图:
UILabel的基本使用

2. UILabel的attributeText使用

UILabel除了基本使用以外,还可以通过attributeText在同一个Label中设置多种字体和颜色,甚至插入图片等内容。我们还是用一个例子来说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 300, 300, 44)];
textLabel.font = [UIFont systemFontOfSize:12];
textLabel.textColor = [UIColor greenColor];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"测试多种字体显示"] ;
//为所有文本设置字体
[attributedString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:24] range:NSMakeRange(0, [attributedString length])];
//将“测试”两字字体颜色设置为蓝色
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0, 2)];
//将“多种字体”四个字字体颜色设置为红色
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(2, 4)];
//在“测”和“试”两字之间插入一张图片
NSString *imageName = @"feiji.png";
NSTextAttachment *imageAttachment = [[NSTextAttachment alloc] init];
imageAttachment.image = [UIImage imageNamed:imageName];
NSAttributedString *imageAttributedString = [NSAttributedString attributedStringWithAttachment:imageAttachment];
[attributedString insertAttributedString:imageAttributedString atIndex:1];
textLabel.attributedText = attributedString;
[self.view addSubview:textLabel];

最后Label上显示的结果如下图,可以看到把图片"feiji.png"插入到了Label的文字之中。
使用attributeText在UILabel上显示多种字体

3. 使用drawRect重绘Label

关于第三点我们一般都用不到,下一节我们在具体分析。