UI之UILabel--屬性及用法,uiuilabel--用法
1 // 初始化Label,並設定label的位置及大小 2 UILabel* label = [[UILabel alloc]initWithFrame:CGRectMake(50, 100, 100, 40)]; 3 4 // 設定label位置及大小 5 label.frame = CGRectMake(50, 100, 100, 40);
// enabled屬性如果設定為No,則文字顏色會變暗,表明其是停用,預設值為YES
label.enabled = YES;
6
7 // 設定背景顏色 8 label.backgroundColor = [UIColor yellowColor]; 9 10 // 清除背景顏色 11 label.backgroundColor = [UIColor clearColor]; 12 13 // 設定高亮 14 label.highlighted = YES; 15 16 // 設定隱藏 17 label.hidden = NO; 18 19 20 // 設定文本陰影 21 label.shadowColor = [UIColor grayColor]; 22 23 // 設定陰影大小 24 label.shadowOffset = CGSizeMake(2.0, 2.0); 25 26 // 設定圓角 27 label.layer.cornerRadius = 10; 28 29 // 設定label的邊框粗細與顏色,設定前要在相應檔案中加入#import<QuartzCore/QuartzCore.h> 30 // 設定邊框寬度 31 label.layer.borderWidth = 1; 32 33 // 設定邊框顏色 34 label.layer.borderColor = [UIColor redColor].CGColor; 35 36 // 設定標籤 37 label.tag = 1; 38 39 // 設定常值內容 40 label.text = @"abcd"; 41 42 // 把字串的值賦值給label 43 NSString* textLabel = @"abce"; 44 label.text = textLabel; 45 46 // 設定文本類型及文字大小 47 label.font = [UIFont fontWithName:@"Arial" size:30]; 48 // [label setFont:[UIFont fontWithName:@"Arial" size:30]]; 49 50 // 採用系統預設文字類型設定大小 51 label.font = [UIFont systemFontOfSize:12]; 52 // [label setFont:[UIFont systemFontOfSize:12]]; 53 54 // 設定文本顏色 55 label.textColor = [UIColor redColor]; 56 // [label setTextColor:[UIColor lightGrayColor]]; 57 58 // 設定文本對齊 59 label.textAlignment = NSTextAlignmentLeft; 60 // [label setTextAlignment:NSTextAlignmentLeft]; 61 62 /* 其中textAlignment有三種設定方式:NSTextAlignmentLeft為向靠左對齊,NSTextAlignmentCenter為置中對齊,NSTextAlignmentRight為向靠右對齊 63 如果有一些文章介紹時用的是UITextAlignmentCenter/UITextAlignmentLeft/UITextAlignmentRight,那是iOS6以前的用法,iOS6的最新用法已改 */ 64 65 /* 當常值內容很多,label無法全部顯示時label會將常值內容以省略符號的方式代替, 66 下面說一下label文本省略方式的設定 */ 67 // 其中lineBreakMode為可選值 68 [label setLineBreakMode:NSLineBreakByCharWrapping]; 69 // label.lineBreakMode = NSLineBreakByCharWrapping; 70 // linBreakMode enum{ 71 // NSLineBreakByWordWrapping = 0,//保留整個單詞,以空格為邊界 72 // NSLineBreakByCharWrapping,//保留整個字元 73 // NSLineBreakByClipping, //以邊界為止 74 // NSLineBreakByTruncatingHead,//省略開頭,以省略符號代替 75 // NSLineBreakByTruncatingTail,//省略結尾,以省略符號代替 76 // NSLineBreakByTruncatingMiddle//省略中間,以省略符號代替 77 // } 78 79 // 設定文本行數 80 label.numberOfLines = 1; // 不設定時系統會預設行數為1; 81 82 /* 當需要設定的行數為不限數量時,可以用numberOfLines = 0;實現,會自動換行 83 當label大小使用sizeToFit方法時,調整大小時會考慮到該屬性中儲存的值。 84 例如:如果此屬性設定為3,sizeTOFit方法會調整label使它大到足以顯示三行文本 */ 85 [label sizeToFit]; 86 87 // 實現文本多行顯示 88 label.lineBreakMode = NSLineBreakByCharWrapping; 89 label.numberOfLines = 0; 90 91 // 文本自動根據label大小自動調整字型尺寸 92 label.numberOfLines = 1; 93 label.adjustsFontSizeToFitWidth = YES; 94 /* adjustFontSizeToFitWidth方法可實現文本自動根據label大小自動調整字型尺寸,直到文本的大小達到了自己設定的label文本尺寸最大、最小值與字串的最大最小值,要是用這個方法還有一個很大的限制就是只有在numberOfLines設定為1時才能用 */ 95 96 /* 如果行數是超過了1行,要實現自動調整字型大小功能,就沒有可以自適應的系統方法可以使用,只有自己用代碼實現,在設計時因為要考慮到手機螢幕的實際大小有限,如果字型太小會影響使用者體驗,所以要設定一個最小字型大小的判斷,小於最小字型大小就要用到縮減顯示,下面的代碼中主要是用到: 97 98 CGSize size = [label sizeWithFont:font constrainedToSize:CGSizeMake(100, 180) lineBreakMode:NSLineBreakByCharWrapping]; 99 100 來得到字型在某一字型大小下的高度,判斷與label高度是否一致,其中text是輸入label的常值內容,sizWithFont設定字型,constrainedToSize設定約束文本的矩形大小參數,其中寬度要和label一致,高度設定要足夠高,要比label高很多,否則會出現文本顯示不全的問題,lineBreakMode的作用上文有講過。如果算出的高度超出了label高度,就把字型大小以迴圈的方式減小直到高度符合就跳出迴圈。101 102 float maxHeight =50;//設定最大高度103 float minFontSize =9;104 float height;105 int fontSize = 31;//設定最大字型大小106 NSString *text = @"輸入常值內容";107 do {108 fontSize = fontSize - 1;109 UIFont *font =[UIFont fontWithName:@"Arial" size:fontSize];110 //寬度與label的寬度一樣,高度應高於label高度111 CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(100, 180)] lineBreakMode:NSLineBreakByCharWrapping];112 height = size.height;113 NSLog(@"height=%f,fontSize=%d,text=%@",height,fontSize,text);114 } while (height > maxHeight&&fontSize>minFontSize);115 116 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 100, 50)];117 label.text =text;118 if (fontSize ==9) {//判斷字型是否小於最小字型大小,小於最小字型大小時就使用系統預設的縮減顯示119 label.font = [UIFont fontWithName:@"Arial" size:15];120 }121 else{122 label.font = [UIFont fontWithName:@"Arial" size:fontSize];123 label.lineBreakMode = NSLineBreakByCharWrapping;//實現文字多行顯示124 label.numberOfLines = 0;125 }126 [self.view addSubview:label];127 */128 129 // 設定背景圖片130 /* 方法一、設定背景圖可以把一張大小與label一樣的圖放在label的後面一層,131 然後把label的背景設定為透明,這樣實現label有背景132 133 UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 200, 400)];134 UIImageView *imageView =[[UIImageView alloc]init];135 imageView.frame =CGRectMake(50, 50, 200, 400);136 UIImage *image=[UIImage imageNamed:@"1.jpg"];137 imageView.image =image;//imageView會根據自身大小改變添加的圖片的大小所以不需要額外設定image138 label.backgroundColor = [UIColor clearColor];139 label.text =@"hello world";140 label.font = [UIFont systemFontOfSize:30];141 label.textColor = [UIColor yellowColor];142 [self.view addSubview:imageView];//添加的順序不能錯,否則圖片會覆蓋label143 [self.view addSubview:label]; */144 145 /* 方法二、用UIColor設定圖片,然後把UIColor作為背景顏色,就可以實現label設定背景圖146 147 UIColor * color = [UIColor colorWithPatternImage:image];//image為需要添加的背景圖148 UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 100, 200)];149 [label setBackgroundColor:color];150 [self.view addSubview:label];151 152 但這個方法有一個嚴重的缺陷,就是當背景圖的尺寸與label大小不一致時,會出現背景圖被部分截取或者平鋪重複的情況,153 所以更完善的方法是要先修改好背景圖的大小與label大小一致再設定背景顏色。可以用下面的函數設定image尺寸154 155 -(UIImage *)scaleImage:(UIImage *)img ToSize:(CGSize)itemSize{156 UIImage *i;157 // 建立一個bitmap的context,並把它設定成為當前正在使用的context158 UIGraphicsBeginImageContext(itemSize);159 CGRect imageRect=CGRectMake(0, 0, itemSize.width, itemSize.height);160 // 繪製改變大小的圖片161 [img drawInRect:imageRect];162 // 從當前context中建立一個改變大小後的圖片163 i=UIGraphicsGetImageFromCurrentImageContext();164 // 使當前的context出堆棧165 UIGraphicsEndImageContext();166 // 返回新的改變大小後的圖片167 return i;168 }169 170 然後在主函數中調用即可171 172 CGSize size= CGSizeMake(100, 200);173 UIImage *image =[UIImage imageNamed:@"1.jpg"];174 UIImage *laterImage =[self scaleImage:image ToSize:size];175 UIColor * color = [UIColor colorWithPatternImage:laterImage];176 UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 100, 200)];177 [label setBackgroundColor:color];178 [self.view addSubview:label]; */179 180 //文本基準181 label.baselineAdjustment=UIBaselineAdjustmentNone;//文本最低端與label中線對齊182 label.baselineAdjustment=UIBaselineAdjustmentAlignBaselines;//文本最上端與中線對齊183 label.baselineAdjustment=UIBaselineAdjustmentAlignCenters; //文本中線與label中線對齊184 185 //自動收縮186 label.minimumScaleFactor=0.5;187 188 // 添加視圖189 [self.view addSubview:label];