ios開發(fā) 之 設(shè)置多種文字顏色/背景色/文字下劃線/行間距 NSString

NSMutableAttributedString常見的屬性:

NSFontAttributeName 字體

NSForegroundColorAttributeName 文字顏色

NSBackgroundColorAttributeName 背景顏色

NSStrikethroughStyleAttributeName 刪除線(默認(rèn)是0,無刪除線)

NSUnderlineStyleAttributeName 下劃線(默認(rèn)是0,無下劃線)

NSParagraphStyleAttributeName 設(shè)置段落/間距

使用方法:

為某一范圍內(nèi)文字設(shè)置多個屬性

- (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range;

為某一范圍內(nèi)文字添加某個屬性

- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;

為某一范圍內(nèi)文字添加多個屬性

- (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range;

復(fù)制代碼

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

label.numberOfLines = 0;

label.font = [UIFont systemFontOfSize:18];

NSMutableAttributedString * str = [[NSMutableAttributedString alloc]initWithString:@"你說你最愛丁香花,因為你的名字就是它,多么憂郁的花,多愁善感的人?。?];

//設(shè)置文字顏色以及字體、刪除線

NSDictionary * dict = @{

NSForegroundColorAttributeName:[UIColor redColor],

NSFontAttributeName:[UIFont systemFontOfSize:13],

NSStrikethroughStyleAttributeName:@"1"};

//從下標(biāo)0開始,長度為18的內(nèi)容設(shè)置多個屬性,dict里面寫的就是設(shè)置的屬性

[str setAttributes:dict range:NSMakeRange(0, 18)];

//設(shè)置背景顏色以及下劃線

NSDictionary * dict1 = @{

NSBackgroundColorAttributeName:[UIColor yellowColor],

NSUnderlineStyleAttributeName:@"1"};

//從下標(biāo)14開始,長度為6的內(nèi)容添加多個屬性,dict1里面寫的就是添加的屬性

[str addAttributes:dict1 range:NSMakeRange(14, 6)];

//從下標(biāo)21開始,長度為2的內(nèi)容添加字體屬性,設(shè)置其字號為22

[str addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:22] range:NSMakeRange(21, 2)];

label.attributedText = str;

[self.view addSubview:label];

復(fù)制代碼

復(fù)制代碼

UITextView *titleText = [[UITextView alloc] initWithFrame:CGRectMake(10, 200, 300, 300)];

titleText.text = @"說不上為什么,我變得很主動。若愛上一個人,什么都會值得去做。我想大聲宣布,對你依依不舍。連隔壁鄰居都猜到我現(xiàn)在的感受,河邊的風(fēng)在吹著頭發(fā)飄動,牽著你的手一陣莫名感動。我想帶你回我的外婆家,一起看著日落,一直到我們都睡著。我想就這樣牽著你的手不放開,愛能不能夠永遠(yuǎn)單純沒有悲哀,我想帶你騎單車,我想和你看棒球,想這樣沒擔(dān)憂唱著歌一直走!";

titleText.font = [UIFont systemFontOfSize:12];

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];

paragraphStyle.lineSpacing = 10;//行間距

//設(shè)置字號和行間距

NSDictionary *ats = @{

NSFontAttributeName : [UIFont systemFontOfSize:16.0f],

NSParagraphStyleAttributeName : paragraphStyle,

};

titleText.attributedText = [[NSAttributedString alloc] initWithString:titleText.text attributes:ats];//設(shè)置行間距

[self.view addSubview:titleText];

復(fù)制代碼

如果是給Label設(shè)置的行間距,設(shè)置完以后,獲取label的高度方法:

//獲取設(shè)置文本間距以后的高度,210是控件的寬度,需要寫一致,不然獲取的高度有問題

CGRect fram = [dataLabel.attributedText boundingRectWithSize:CGSizeMake(210, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:nil];

NSLog(@"-----高度是%f",fram.size.height);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容