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];
新聞熱點
疑難解答