uilabel 的相關處理 類富文字(自動換行,設定行高,同一個label多種顏色,給文字加下劃線 首行縮排 等 等)
1.自動換行
UIFont *font=[UIFont systemFontOfSize:lableFont];
self.numberOfLines=0;
self.lineBreakMode=NSLineBreakByWordWrapping;
self.text=content;
self.font=font;
self.textColor=color;
CGSize sizeW=[content sizeWithFont:font constrainedToSize:lableSize lineBreakMode:NSLineBreakByWordWrapping];
self.frame=CGRectMake(self.frame.origin.x, self.frame.origin.y, sizeW.width, sizeW.height);// 此處的 siezeW.with 可以根據需要 設定為 你想要的寬度 如在cell 中讓他為300 或者200 等等 此處設定為siezeW.with 是為了 讓label 適應寬度 同樣的在cell 中 為了讓cell 自適應高度 只要將 cell的高度設定為 sizeW.height 就可以了
有時候根據工程需求 需要根據比如“冒號” “ 分號”等換行 就可以使用
// 根據 冒號 分號等的分行 顯示 \r\n即為分行 把想換行的特殊符號 換為\r\n 就可以瞭然後在加上上面的就可以根據你字串的內容自動換行了
NSString *str = [str1 stringByReplacingOccurrencesOfString:@";" withString:@"\r\n"];
2.調整uilabel 行高間距
UILabel *contenLable=[[UILabel alloc]initWithFrame:CGRectMake(10, 5, 300, 310)];
contenLable.textColor=[Utils getDarkColor];
contenLable.font=[UIFont systemFontOfSize:13];
contenLable.lineBreakMode=UILineBreakModeWordWrap;
contenLable.numberOfLines=0;
// 設定字型間每行的間距
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineHeightMultiple = 15.0f;
paragraphStyle.maximumLineHeight = 15.0f;
paragraphStyle.minimumLineHeight = 15.0f;
paragraphStyle.lineSpacing = 4.0f;// 行間距
NSString *string = @"此處的 siezeW.with 可以根據需要 設定為 你想要的寬度 如在cell 中讓他為300 或者200 等等 此處設定為siezeW.with 是為了 讓label 適應寬度 同樣的在cell 中 為了讓cell 自適應高度 只要將 cell的高度設定為 sizeW.height 就可以了";
NSDictionary *ats = @{
NSParagraphStyleAttributeName : paragraphStyle,
};
contenLable.attributedText = [[NSAttributedString alloc] initWithString:string attributes:ats];
[view addsubview: contenLabel];
3.對label 新增下劃線同一個label 多種顏色
新增下劃
NSMutableAttributedString *content = [[NSMutableAttributedString alloc]initWithString:str];
NSRange contentRange = { 0,[content length]};
[content addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:contentRange];
新增 顏色 只有在ios 7上可以
// NSRange contentRangenew = {0,2};
// [content addAttribute:NSForegroundColorAttributeName value:(id)[[UIColor blueColor]CGColor] range:contentRangenew];
// NSRange conw = {4,19};
// [content addAttribute:NSForegroundColorAttributeName value:(id)[[UIColor blackColor]CGColor] range:conw];
Label.attributedText = content;
4.總結以上
NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
paragraph.alignment = NSTextAlignmentJustified;//設定對齊方式
paragraph.lineBreakMode = NSLineBreakByWordWrapping;
NSAttributedString的初始化方法有
-initWithString:用String初始化,並沒有Attributed資訊。
-initWithAttributedString:用AttributedString去初始化。
-initWithString:Attributed:用string及attribute的dictionary來初始化。
具體AttributtedString屬性的鍵值對如下:
NSString *const NSFontAttributeName;//值為UIFont,設定字型,預設值為12-point Helvetica(Neue) 。
NSString *const NSParagraphStyleAttributeName;//值為NSParagraphStyle,設定段落屬性,預設值為[NSParagraphStyle defaultParagraphStyle]返回的值。
NSMutableParagraphStyle與NSParagraphStyle包括一下屬性
alignment //對齊方式
firstLineHeadIndent //首行縮排
headIndent //縮排
tailIndent //尾部縮排
lineBreakMode //斷行方式
maximumLineHeight //最大行高
minimumLineHeight //最低行高
lineSpacing //行距
paragraphSpacing //段距
paragraphSpacingBefore //段首空間
baseWritingDirection //句子方向
lineHeightMultiple //可變行高,乘因數。
hyphenationFactor //連字元屬性
NSString *const NSForegroundColorAttributeName;//值為UIColor,字型顏色 預設黑色
NSString *const NSBackgroundColorAttributeName;//值為UIColor,字型背景色,預設沒有。
NSString *const NSLigatureAttributeName;//值為整型NSNumber,連字屬性,一般中文用不到,在英文中可能出現相鄰字母連筆的情況。0為不連筆;1為預設連筆,也是預設值;2在ios 上不支援。
NSString *const NSKernAttributeName;//值為浮點數NSNumber,字距屬性,預設值為0。
NSString *const NSStrikethroughStyleAttributeName;//值為整型NSNumber,可取值為
enum {
NSUnderlineStyleNone = 0×00,
NSUnderlineStyleSingle = 0×01,
};設定刪除線。
NSString *const NSUnderlineStyleAttributeName;//同上。設定下劃線。
NSString *const NSStrokeColorAttributeName;//值為UIColor,預設值為nil,設定的屬性同ForegroundColor。
NSString *const NSStrokeWidthAttributeName;//值為浮點數NSNumber。設定比畫的粗細。
NSString *const NSShadowAttributeName;//值為NSShadow,設定比畫的陰影,預設值為nil。
NSString *const NSVerticalGlyphFormAttributeName;//值為整型NSNumber,0為水平排版的字,1為垂直排版的字。
首行縮排舉例子
NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];// 下面就可以設定他的各種屬性了
paragraph.firstLineHeadIndent = 20;// 這裡 只是設定了首行縮排 我這裡設定首行縮排 20 縮排兩個字 根據需求可以調節縮排的大小
NSDictionary *ats = @{
NSParagraphStyleAttributeName : paragraph,
};
Label.attributedText = [[NSMutableAttributedString alloc]initWithString:str attributes:ats];