2014
Feb
04

UILabel 是一个文字区块,通常是用来描述某一个栏位的意义,例如说明输入框的内容,算是一个很常用的物件。

建立一个 UILabel

什么是 CGRect

使用 Label 之前,要先定义文字区块的大小,这里我们使用的是 CGRect 物件 ,CGRect 是一个距形区块 (Rectangle) 的意思,这个区块代表了 Label 的区域范围,这个物件我们要给他座标与尺寸,一个座标需要 X ,Y 两个点,一个尺寸则是由宽、高两个数据组成,顺便说一个 CGPointCGSize 这两个也是座标与尺寸,所以我也可以说 一个 CGRect 是由 一个 CGPoint 加上 一个 CGSize。

这个距形越大,Label 的区块就越大,而建立 CGRect 的方式是使用 CGRectMake ,如下面的范例:

  • CGRectMake(X, Y, Width, Height);

建构 Label

建构 Label 时,要指定 Label 的区域范围,也就是把上一步建立的 CGRect 指定给 Label。

  • UILabel *label = [[UILabel alloc] initWithFrame: CGRect];

设定 Label 文字内容与颜色

  • label.text = @"xxxxxx";
  • [label setTextColor:[UIColor blackColor]]

设定 Label 背景色

上一步设定文字颜色时,我使用的是 blackColor ,这是 Obj-C 内建的色票,但是内建的色票不一定能满足我们的需求,另一个颜色的设定方式,是直接使用 RGB 三原色,分别设定 colorWithRed 红, green 绿, blue 蓝,最后 UIColor 还支援一个透明度 alpha 的设定。

  • UIColor *bg = [UIColor colorWithRed:200/255.0f green:200/255.0f blue:150/205.0f alpha:1.0];
  • [label setBackgroundColor:bg];

一个简单的 Label 文字建立方式范例如下:

Normal Label
  1. int labelHeight = 50;
  2. int width = 40;
  3. CGRect labelFrame = CGRectMake(1, labelHeight , width - 2, labelHeight);
  4. UILabel *label = [[UILabel alloc] initWithFrame:labelFrame];
  5. [label setTextColor:[UIColor blackColor]];
  6. label.text = @"中文字体";
  7.  
  8. UIColor *bg = [UIColor colorWithRed:200/255.0f green:200/255.0f blue:150/205.0f alpha:1.0];
  9. [label setBackgroundColor:bg];
  10.  
DEMO
 Normal Label

设定 Label 字型与大小

  • UIFont *font = [UIFont fontWithName:@"标楷体" size:32];
  • [label setFont: font];

多行文字

Label 的文字行数,预设是只有一行,当文字超过一行时,Label 后面的文字会自动转换成「...」,如果我们需要多行文字,可以设定 numberOfLines 的值大於 1,1 代表 1 行,2 就代表 2 行。


  • label.numberOfLines = 5;

Label Event

Label 也可以绑定各种事件,如点击,拖拉等等,但是 Obj-C 的 Label 预设是不能有任何 event 的,所以在绑定 event 之前,我们必须先设定 userInteractionEnabled = YES,这样绑上去的 event 才会有作用。

  • labe.userInteractionEnabled = YES
Label Bind Event
  1. // Label Code
  2. label.userInteractionEnabled = YES;
  3. UITapGestureRecognizer *tapGesture =
  4. [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelClicked:)];
  5. [label addGestureRecognizer:tapGesture];
  6.  
  7. - (void) labelClicked:(id) sender {
  8. NSLog(@"Click label.");
  9. }

回應 (Leave a comment)