NSMutableAttributedString富文本处理

本文介绍如何使用NSAttributedString在iOS应用中实现文本颜色及行间距的调整,并提供了一个计算文本高度的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

颜色的处理

NSString *content = @"披绣闼,俯雕甍,山原旷其盈视,川泽纡其骇瞩.闾阎扑地,钟鸣鼎食之家,舸舰迷津,青雀黄龙之舳.云销雨霁,彩彻区明.落霞与孤鹜齐飞,秋水共长天一色.渔舟唱晚,响穷彭蠡之滨;雁阵惊寒,声断衡阳之浦.";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:content];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor purpleColor] range:NSMakeRange(0, content.length)];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor purpleColor] range:NSMakeRange(content.length + 2, content.length)];
// 创建一个UILabel
UILabel *aLabel = [[UILabel alloc] init];
aLabel.attributedText = attributedString;

行间距的处理

NSString *content = @"披绣闼,俯雕甍,山原旷其盈视,川泽纡其骇瞩.闾阎扑地,钟鸣鼎食之家,舸舰迷津,青雀黄龙之舳.云销雨霁,彩彻区明.落霞与孤鹜齐飞,秋水共长天一色.渔舟唱晚,响穷彭蠡之滨;雁阵惊寒,声断衡阳之浦.";
UILabel *contentLabel = [[UILabel alloc] init];
// 内容的高度
CGFloat content_height = [content sizeWithFont:[UIFont systemFontOfSize:15] withMaxSize:CGSizeMake(300, MAXFLOAT)].height;
NSNumber *count = @((content_height) / self.contentLabel.font.lineHeight);
// 内容
contentLabel.frame = // Label的frame
contentLabel.text = content;
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:contentLabel.text];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 8; // 设置行间距 
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, contentLabel.text.length)];
contentLabel.attributedText = attributedString;

计算文字的高度方法

- (CGSize)sizeWithFont:(UIFont *)font withMaxSize:(CGSize)maxSize {
    NSDictionary *attrs = @{NSFontAttributeName:font};
    return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil ].size;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值