UILabel

UILabel:UIView UIView屬性和方法UILabel都擁有
作用是專門用來顯示文字的控件

目錄

  • label相關的屬性
  • 對齊模式
  • 設置換行模式
  • 自動計算label高度的前提是固定label的寬度,自動換行
  • ios動態獲取UILabel的高度和寬度
  • 判斷label的text 是否超出顯示范圍
  • 調整行間距

label相關的屬性

  • text(核心屬性)
[label setText:@"hello world 你好"];

UIFont是UI字體類

  • 創建系統常規字體并且設置字體大小
UIFont * font = [UIFont systemFontOfSize:15];
  • 系統默認加粗字體
UIFont * font1 = [UIFont boldSystemFontOfSize:15];
  • 系統默認斜體
UIFont * font2 = [UIFont italicSystemFontOfSize:15];
  • 拿到當前系統支持的所有的字體名
NSArray * allFontName = [UIFont familyNames]; 
NSLog(@"%@", allFontName);

設置字體名和字體大小
UIFont * font3 = [UIFont fontWithName:@"Zapfino" size:16];
    
設置字體
[label setFont:font];
    ```
    
- 6.設置文字顏色(默認是黑色)
```objc
    label.textColor = [UIColor redColor];
  • 7.設置陰影顏色
    label.shadowColor = [UIColor grayColor];
  • 8.設置陰影偏移
    [label setShadowOffset:CGSizeMake(2, 2)];

對齊模式

居左 (默認)
NSTextAlignmentLeft 
居中
NSTextAlignmentCenter  
居右
NSTextAlignmentRight 
[label setTextAlignment:NSTextAlignmentLeft];

設置換行模式

[label setLineBreakMode:NSLineBreakByTruncatingMiddle];
  • 以一個單詞為單位換行,最一行顯示不全內容以單詞截斷,后面直接不顯示
NSLineBreakByWordWrapping
  • 以字符換行
NSLineBreakByCharWrapping   
  • 以一個單詞為單位換行,最后一行顯示不全的內容,在label的最后直接截斷,后面直接不顯示
NSLineBreakByClipping   
  • 顯示不全;最后一行將最后的內容顯示,前面使用...代替
    例:Truncate at head of line: "...wxyasdasdz"
NSLineBreakByTruncatingHead
  • 顯示不全;最后一行將前面的內容顯示,最后使用...代替
    例:Truncate at tail of line: "abcd..."
 NSLineBreakByTruncatingTail
  • 顯示不全;最后一行將前面的內容顯示和最后的內容顯示,中間使用...代替
NSLineBreakByTruncatingMiddle 
  • 行數(要適應label高度才行)
 [label setNumberOfLines:3];
  • 自動換行(將內容顯示全的前提是label的高度足夠高)
 1.設置設置行數為0
    [label setNumberOfLines:0];
  2.設置換行模式
    [label setLineBreakMode:NSLineBreakByWordWrapping];
  • 自適應寬度(將字體縮放,以致所有的文字都顯示全)
  [label setAdjustsFontSizeToFitWidth:YES];

自動計算label高度的前提是固定label的寬度,自動換行

  • 固定寬度為200,要顯示的字符串是下面這個字符串
    NSString * str = @"阿什頓客服哈是客戶的空間哈倫褲的是否考慮啥可來得及發貨時看見啊奧斯卡交電話費看見啦釋放及時奧斯卡恢復卡是否啊開始地方可拉伸阿什頓客服哈是客戶的空間哈倫褲的是否考慮啥可來得及發貨時看見啊奧斯卡交電話費看見啦釋放及時奧斯卡恢復卡是否啊開始地方可拉伸";
  • 計算顯示當前字符串需要多大的空間(寬和高)
  • 參數1:限制顯示當前字符串的最大寬度和最大高度
  • 參數2:渲染模式
  • 參數3:字符串的屬性(設置文字顏色和字體)
  • NSFontAttributeName:設置字體的鍵
  • NSForegroundColorAttributeName:設置文字顏色的鍵
  • 參數4:上下文
CGRect rect = [str boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17], NSForegroundColorAttributeName:[UIColor redColor]} context:nil];
  • 創建label顯示文字
    UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, rect.size.width, rect.size.height)];
  • 設置文字
label.text = str;
  • 自動換行
    label.numberOfLines = 0;
    label.lineBreakMode = NSLineBreakByWordWrapping;
  • label的字體要和我們計算的字體一樣的大,或者比計算的字體小
label.font = [UIFont systemFontOfSize:17];

ios動態獲取UILabel的高度和寬度

http://www.cnblogs.com/spiritstudio/archive/2011/11/17/2252074.html

在使用UILabel存放字符串時,經常需要獲取label的長寬數據,本文列出了部分常用的計算方法。

1.獲取寬度,獲取字符串不折行單行顯示時所需要的長度 
CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)];
注:如果想得到寬度的話,size的width應該設為MAXFLOAT。

2.獲取高度,獲取字符串在指定的size內(寬度超過label的寬度則換行)所需的實際高度.

CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
注:如果想得到高度的話,size的height應該設為MAXFLOAT。

3.實際編程時,有時需要計算一段文字最后一個字符的位置,并在其后添加圖片或其他控件(如info圖標),下面代碼為計算label中最后一個字符后面一位的位置的方法。

CGSize sz = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(MAXFLOAT, 40)];
CGSize linesSz = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
if(sz.width <= linesSz.width) //判斷是否折行
{
        lastPoint = CGPointMake(label.frame.origin.x + sz.width, label.frame.origin.y);  
}
else  
{  
        lastPoint = CGPointMake(label.frame.origin.x + (int)sz.width % (int)linesSz.width,linesSz.height - sz.height);  
} 


判斷label的text 是否超出顯示范圍


NSString *aString = @"按實際大獎是拉薩就對啦卡死了都就拉上";
    _lable = [[UILabel alloc]initWithFrame:CGRectMake(50, 20, 150, 50)];
    _lable.text = aString;
    _lable.textColor = [UIColor blackColor];
   
    [_lable setNumberOfLines:2];
    //拿到實際的Label長度
    CGSize titleSize = [aString sizeWithFont:_lable.font constrainedToSize:CGSizeMake(MAXFLOAT, 50)];
   //作比較
    NSLog(@"%lf", titleSize.width);
    NSLog(@"%lf", _lable.frame.size,width);

    [self.view addSubview:_lable];
iOS10 顯示文字不全,添加方法解決
iOS10顯示文字

調整行間距


 UILabel *yearVipLabel = [[UILabel alloc]initWithFrame:CGRectMake(intevar, CGRectGetMaxY(yearVipTitle.frame) + intevar, self.view.width - intevar * 2, 200)];

 yearVipLabel.numberOfLines = 0;

 NSString *descStr = _buyYearInfoModel.desc;
 NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:descStr];
 NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
 [paragraphStyle setLineSpacing:15];//調整行間距
 [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [descStr length])];
 yearVipLabel.attributedText = attributedString;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容