ios開發UI篇--UILabel

b10l07發表於2018-02-02

概述

  • UILabel類實現了一個只讀文字檢視。你可以使用這個類來畫一個或多個靜態文字.UILabel類支援既簡單又複雜的樣式標籤文字,還可以控制外觀,比如標籤是否使用了一個影子或者處於高亮狀態等等.
  • UILabel類繼承自UIView

屬性

建立UILabel物件

 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];

設定顯示文字,預設是空的

label.text = @"測試";

設定字型(系統預設字型是17號字型)

label.font = [UIFont systemFontOfSize:16];

設定字型顏色(預設是黑色)

label.textColor = [UIColor redColor];

設定對齊方式(在iOS 9之後,此屬性的預設值是nstextalignmentnatural;之前的iOS 9,預設值為nstextalignmentleft。)

居左
NSTextAlignmentLeft
居中
NSTextAlignmentCenter
居右
NSTextAlignmentRight
label.textAlignment = NSTextAlignmentCenter;

設定換行模式

以一個單詞為單位換行,最一行顯示不全內容以單詞截斷,後面直接不顯示
NSLineBreakByWordWrapping
以字元換行
NSLineBreakByCharWrapping
以一個單詞為單位換行,最後一行顯示不全的內容,在label的最後直接截斷,後面直接不顯示
NSLineBreakByClipping
顯示不全;最後一行將最後的內容顯示,前面使用...代替
例:Truncate at head of line: "...wxyasdasdz"
NSLineBreakByTruncatingHead
顯示不全;最後一行將前面的內容顯示,最後使用...代替
例:Truncate at tail of line: "abcd..."
NSLineBreakByTruncatingTail
顯示不全;最後一行將前面的內容顯示和最後的內容顯示,中間使用...代替
NSLineBreakByTruncatingMiddle
label.lineBreakMode = NSLineBreakByWordWrapping;

設定陰影顏色

label.shadowColor = [UIColor greenColor];

設定陰影的偏移量,預設是 CGSizeMake(0, -1) -- a top shadow

label.shadowOffset = CGSizeMake(0, -2);

設定行數(當文字需要自適應時,需將行數設定為0)

 label.numberOfLines = 0;

adjustsFontSizeToFitWidth根據寬度調整font,預設為 NO

label.adjustsFontSizeToFitWidth = YES;

attributedText屬性文字,這裡不多做介紹,具體請點此檢視

高亮屬性

設定是否處於高亮狀態

[label setHighlighted:YES];

設定高亮狀態字型的顏色

label.highlightedTextColor = [UIColor blueColor];

設定能否進行使用者互動(預設為NO)

label.userInteractionEnabled = YES;

此屬性只決定如何繪製標籤。禁用的文字有些模糊,表示它不活躍。預設情況下,此屬性被設定為yes。

label.enabled = NO;

自適應

default is NO 設定字型大小適應label寬度

label.adjustsFontSizeToFitWidth = YES;

default is UIBaselineAdjustmentAlignBaselines //如果adjustsFontSizeToFitWidth屬性設定為YES,這個屬性就來控制文字基線的行為

label.baselineAdjustment = UIBaselineAdjustmentAlignBaselines;

專案中label自適應高度程式碼

+ (CGFloat)getHeightByWidth:(CGFloat)width title:(NSString *)title font:(UIFont *)font
{
    
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, 0)];
    label.text = title;
    label.font = font;
    label.numberOfLines = 0;
    [label sizeToFit];
    CGFloat height = label.frame.size.height;
    return height;
}

專案中label自適應寬度的程式碼

+ (CGFloat)getWidthWithTitle:(NSString *)title font:(UIFont *)font {
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 1000, 0)];
    label.text = title;
    label.font = font;
    [label sizeToFit];
    return label.frame.size.width;
}

相關文章