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)