字符属性可以应用于 attributedstring 的文本中。
NSString *const NSFontAttributeName;(字体大小)
NSString *const NSParagraphStyleAttributeName;(段落)
NSString *const NSForegroundColorAttributeName;(字体颜色)
NSString *const NSBackgroundColorAttributeName;(字体背景色)
NSString *const NSLigatureAttributeName;(连字符)
NSString *const NSKernAttributeName;(字间距)
NSString *const NSStrikethroughStyleAttributeName;(删除线)
NSString *const NSUnderlineStyleAttributeName;(下划线)
NSString *const NSStrokeColorAttributeName;(边线颜色)
NSString *const NSStrokeWidthAttributeName;(边线宽度)
NSString *const NSShadowAttributeName;(阴影)
NSString *const NSVerticalGlyphFormAttributeName;(横竖排版)
NSString *const NSObliquenessAttributeName;(文本倾斜)
NSString *const NSExpansionAttributeName;(文本扁平化)
富文本属性 | 介绍 |
---|---|
NSFontAttributeName(字体大小) | 该属性所对应的值是一个 UIFont 对象。该属性用于改变一段文本的字体。如果不指定该属性,则默认为12-point Helvetica(Neue) |
NSParagraphStyleAttributeName(段落) | 该属性所对应的值是一个 NSParagraphStyle 对象。该属性在一段文本上应用多个属性。如果不指定该属性,则默认为defaultParagraphStyle。 |
NSForegroundColorAttributeName(字体颜色) | 该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的字体颜色。如果不指定该属性,则默认为黑色。 |
NSBackgroundColorAttributeName(字体背景色) | 该属性所对应的值是一个 UIColor 对象。该属性用于指定一段文本的背景颜色。如果不指定该属性,则默认无背景色。 |
NSLigatureAttributeName(连字符) | 该属性所对应的值是一个 NSNumber 对象(整数)。连体字符是指某些连在一起的字符,它们采用单个的图元符号。0 表示没有连体字符。1 表示使用默认的连体字符。2表示使用所有连体符号。默认值为1(注意,iOS 不支持值为2) |
NSKernAttributeName(字间距) | 该属性所对应的值是一个 NSNumber 对象(整数)。字母紧排指定了用于调整字距的像素点数。字母紧排的效果依赖于字体。值为0 表示不使用字母紧排。默认值为0。 |
NSStrikethroughStyleAttributeName(删除线) | 该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上删除线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。 |
NSUnderlineStyleAttributeName(下划线) | 该属性所对应的值是一个 NSNumber 对象(整数)。该值指定是否在文字上加上下划线,该值参考“Underline Style Attributes”。默认值是NSUnderlineStyleNone。 |
NSStrokeColorAttributeName(边线颜色) | 该属性所对应的值是一个 UIColor 对象。如果该属性不指定(默认),则等同于NSForegroundColorAttributeName。否则,指定为删除线或下划线颜色。 |
NSStrokeWidthAttributeName(边线宽度) | 该属性所对应的值是一个 NSNumber 对象(小数)。该值改变描边宽度(相对于字体size 的百分比)。默认为0,即不改变。正数只改变描边宽度。负数同时改变文字的描边和填充宽度。例如,对于常见的空心字,这个值通常为3.0。 |
NSShadowAttributeName(阴影) | 该属性所对应的值是一个 NSShadow 对象。默认为nil。 |
NSVerticalGlyphFormAttributeName(横竖排版) | 该属性所对应的值是一个 NSNumber 对象(整数)。0 表示横排文本。1 表示竖排文本。在iOS 中,总是使用横排文本,0 以外的值都未定义。 |
NSObliquenessAttributeName(文本倾斜) | 该属性所对应的值是一个 NSNumber 对象(float)默认为0 |
NSExpansionAttributeName(文本扁平化) | 该属性所对应的值是一个 NSNumber 对象(float)默认为0 |
代码案例:
设置字体大小、文字颜色、字间距、文字背景色
- (void)viewDidLoad {
[super viewDidLoad];
NSString *content = @"好吗 一句话就哽住了喉 城市当背景的海市蜃楼 我们像分隔成一整个宇宙 再见都化作乌有 我们说好决不放开相互牵的手 可现实说过有爱还不够走到分岔的路口 你向左我向右 我们都倔强地不曾回头 我们说好就算分开一样做朋友 时间说我们从此不可能再问候 人群中再次邂逅";
NSMutableDictionary *attDic = [NSMutableDictionary dictionary];
[attDic setValue:[UIFont systemFontOfSize:16] forKey:NSFontAttributeName]; // 字体大小
[attDic setValue:[UIColor redColor] forKey:NSForegroundColorAttributeName]; // 字体颜色
[attDic setValue:@10 forKey:NSKernAttributeName]; // 字间距
[attDic setValue:[UIColor cyanColor] forKey:NSBackgroundColorAttributeName]; // 设置字体背景色
NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:content attributes:attDic];
CGFloat contentH = [attStr boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin context:nil].size.height; // 自动计算文本高度
UILabel *txtLbl = [[UILabel alloc] init];
txtLbl.frame = CGRectMake(100, 100, 200, contentH);
txtLbl.numberOfLines = 0;
txtLbl.attributedText = attStr;
txtLbl.backgroundColor = [UIColor redColor];
self.view.userInteractionEnabled = YES;
txtLbl.userInteractionEnabled = YES;
[self.view addSubview:txtLbl];
}
运行效果图 img1
img1.png设置行间距、删除线、下划线
- (void)viewDidLoad {
[super viewDidLoad];
NSString *content = @"好吗 一句话就哽住了喉 城市当背景的海市蜃楼 我们像分隔成一整个宇宙 再见都化作乌有 我们说好决不放开相互牵的手 可现实说过有爱还不够走到分岔的路口 你向左我向右 我们都倔强地不曾回头 我们说好就算分开一样做朋友 时间说我们从此不可能再问候 人群中再次邂逅";
NSMutableDictionary *attDic = [NSMutableDictionary dictionary];
[attDic setValue:[UIFont systemFontOfSize:16] forKey:NSFontAttributeName]; // 字体大小
NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:content attributes:attDic];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; // 设置行之间的间距
style.lineSpacing = 20;
[attStr addAttribute:NSParagraphStyleAttributeName value:style range: NSMakeRange(0, content.length)];
[attStr addAttribute:NSStrikethroughStyleAttributeName value:@2 range:NSMakeRange(4, 10)]; // 删除线
[attStr addAttribute:NSUnderlineStyleAttributeName value:@2 range:NSMakeRange(20, 30)]; // 下划线
CGFloat contentH = [attStr boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin context:nil].size.height; // 自动计算文本高度
UILabel *txtLbl = [[UILabel alloc] init];
txtLbl.frame = CGRectMake(100, 100, 200, contentH);
txtLbl.numberOfLines = 0;
txtLbl.attributedText = attStr;
txtLbl.backgroundColor = [UIColor redColor];
self.view.userInteractionEnabled = YES;
txtLbl.userInteractionEnabled = YES;
[self.view addSubview:txtLbl];
}
运行效果图 img2
img2.png设置边线宽度、边线颜色
- (void)viewDidLoad {
[super viewDidLoad];
NSString *content = @"好吗 一句话就哽住了喉 城市当背景的海市蜃楼 我们像分隔成一整个宇宙 再见都化作乌有 我们说好决不放开相互牵的手 可现实说过有爱还不够走到分岔的路口 你向左我向右 我们都倔强地不曾回头 我们说好就算分开一样做朋友 时间说我们从此不可能再问候 人群中再次邂逅";
NSMutableDictionary *attDic = [NSMutableDictionary dictionary];
[attDic setValue:[UIFont systemFontOfSize:21] forKey:NSFontAttributeName]; // 字体大小
[attDic setValue:[UIColor blueColor] forKey:NSForegroundColorAttributeName]; // 字体颜色
[attDic setValue:[UIColor redColor] forKey:NSStrokeColorAttributeName]; // 边线颜色
[attDic setValue:@4 forKey:NSStrokeWidthAttributeName]; // 边线宽度
// [attDic setValue:@0 forKey:NSVerticalGlyphFormAttributeName]; // 设置横竖排版 0 表示横排文本。1 表示竖排文本,iOS只能横排
NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:content attributes:attDic];
CGFloat contentH = [attStr boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin context:nil].size.height; // 自动计算文本高度
UILabel *txtLbl = [[UILabel alloc] init];
txtLbl.frame = CGRectMake(100, 100, 200, contentH);
txtLbl.numberOfLines = 0;
txtLbl.attributedText = attStr;
txtLbl.backgroundColor = [UIColor cyanColor];
self.view.userInteractionEnabled = YES;
txtLbl.userInteractionEnabled = YES;
[self.view addSubview:txtLbl];
}
运行效果图 img3
img3.png设置设置阴影、文字链接
- (void)viewDidLoad {
[super viewDidLoad];
NSString *content = @"好吗 一句话就哽住了喉 城市当背景的海市蜃楼 我们像分隔成一整个宇宙 再见都化作乌有 我们说好决不放开相互牵的手 可现实说过有爱还不够走到分岔的路口 你向左我向右 我们都倔强地不曾回头 我们说好就算分开一样做朋友 时间说我们从此不可能再问候 人群中再次邂逅";
NSMutableDictionary *attDic = [NSMutableDictionary dictionary];
[attDic setValue:[UIFont systemFontOfSize:21] forKey:NSFontAttributeName]; // 字体大小
[attDic setValue:[UIColor blueColor] forKey:NSForegroundColorAttributeName]; // 字体颜色
NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:content attributes:attDic];
NSShadow *shadow = [[NSShadow alloc]init]; // 设置阴影
shadow.shadowBlurRadius = 3; // 模糊度
shadow.shadowOffset = CGSizeMake(5, 5); // 阴影偏移量
shadow.shadowColor = [UIColor redColor]; // 阴影颜色
[attStr addAttribute:NSShadowAttributeName value:shadow range:NSMakeRange(20, 10)];
[attStr addAttribute:NSLinkAttributeName value:[NSURL URLWithString:@"http://www.baidu.com"] range:NSMakeRange(5, 5)]; // 链接
CGFloat contentH = [attStr boundingRectWithSize:CGSizeMake(200, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin context:nil].size.height; // 自动计算文本高度
UILabel *txtLbl = [[UILabel alloc] init];
txtLbl.frame = CGRectMake(100, 100, 200, contentH);
txtLbl.numberOfLines = 0;
txtLbl.attributedText = attStr;
txtLbl.backgroundColor = [UIColor cyanColor];
self.view.userInteractionEnabled = YES;
txtLbl.userInteractionEnabled = YES;
[self.view addSubview:txtLbl];
}
运行效果图 img4
img4.png重复代码太多,粘贴太麻烦,直接剪贴关键部位,其余部分和上面的一样
文字倾斜
[attDic setValue:@0.4 forKey:NSObliquenessAttributeName]; // 文字倾斜
运行效果图 img5
img5.png文本扁平
[attDic setValue:@0.5 forKey:NSExpansionAttributeName]; // 文本扁平
运行效果图 img6
img6.png
网友评论