UI之UILabel--屬性及用法,uiuilabel--用法

來源:互聯網
上載者:User

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];

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.