###1、Attributes字典键值对照表bash
键 | 值类型 | 备注 |
---|---|---|
NSKernAttributeName | NSNumber | 文字间距,支持浮点型 |
NSFontAttributeName | UIFont | 字体 |
NSForegroundColorAttributeName | UIColor | 颜色 |
NSParagraphStyleAttributeName | NSMutableParagraphStyle | 段落样式,详细见【1】 |
NSBackgroundColorAttributeName | UIColor | 字体的所占区域的背景颜色 |
NSStrokeColorAttributeName | UIColor | 字体边框的颜色 |
NSStrokeWidthAttribute | NSNumber | 边框的宽度 |
NSStrikethroughStyleAttributeName | NSNumber | 删除线 |
NSUnderlineStyleAttributeName | NSNumber | 下划线 |
NSVerticalGlyphFormAttributeName | NSNumber | 文字排版方向0 表示横排文本.1 表示竖排文本,iOS只有横排 |
NSObliquenessAttributeName | NSNumber | 文字倾斜程度 |
NSExpansionAttributeName | NSNumber | 文字的扁平化程度 |
NSShadowAttributeName | NSShadow | 文字阴影,见【2】 |
【1】NSMutableParagraphStyle类使用范例app
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 10;// 字体的行间距
paragraphStyle.firstLineHeadIndent = 20.0f;//首行缩进
paragraphStyle.alignment = NSTextAlignmentJustified;//(两端对齐的)文本对齐方式:(左,中,右,两端对齐,天然)
paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;//结尾部分的内容以……方式省略 ( "...wxyz" ,"abcd..." ,"ab...yz")
paragraphStyle.headIndent = 20;//总体缩进(首行除外)
paragraphStyle.tailIndent = 20;//尾部缩进
paragraphStyle.minimumLineHeight = 10;//最低行高
paragraphStyle.maximumLineHeight = 20;//最大行高
paragraphStyle.paragraphSpacing = 15;//段与段之间的间距
paragraphStyle.paragraphSpacingBefore = 22.0f;//段首行空白空间/* Distance between the bottom of the previous paragraph (or the end of its paragraphSpacing, if any) and the top of this paragraph. */paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight;//从左到右的书写方向(一共➡️⬇️⬅️三种)
paragraphStyle.lineHeightMultiple = 15;/* Natural line height is multiplied by this factor (if positive) before being constrained by minimum and maximum line height. */
paragraphStyle.hyphenationFactor = 1;//连字属性 在iOS,惟一支持的值分别为0和1
复制代码
【2】NSShadowAttributeName对应的是NSShadow对象,单一使用不会有任何效果,须要配合着NSVerticalGlyphFormAttributeName(文字排版方向)、NSObliquenessAttributeName(文字倾斜)、NSExpansionAttributeName(文字扁平化)配合使用,NSShadow相关属性设置以下所示.框架
NSShadow *shadow = [[NSShadow alloc]init];
shadow.shadowBlurRadius = 5;//模糊度
shadow.shadowColor = [UIColor whiteColor];//阴影颜色
shadow.shadowOffset = CGSizeMake(1, 5);//阴影的大小
复制代码
1.NSAttributedString 属性字体
//均为只读
@property (readonly, copy) NSString *string;
@property (readonly) NSUInteger length;
复制代码
建立方法ui
- (instancetype)initWithString:(NSString *)str;
- (instancetype)initWithAttributedString:(NSAttributedString *)attrStr;
- (instancetype)initWithString:(NSString *)str attributes:(nullable NSDictionary<NSString *, id> *)attrs;
复制代码
其余方法this
//富文本字符串比较
- (BOOL)isEqualToAttributedString:(NSAttributedString *)other;
复制代码
2.NSMutableAttributedString 做为NSAttributedString的子类增长了如下动态添加富文本样式的方法,见文思意,也没必要过多解释。spa
- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;
- (void)addAttributes:(NSDictionary<NSString *, id> *)attrs range:(NSRange)range;
- (void)removeAttribute:(NSString *)name range:(NSRange)range;
- (void)replaceCharactersInRange:(NSRange)range withAttributedString:(NSAttributedString *)attrString;
- (void)insertAttributedString:(NSAttributedString *)attrString atIndex:(NSUInteger)loc;
- (void)appendAttributedString:(NSAttributedString *)attrString;
//彻底替换掉attributeString的内容
- (void)setAttributedString:(NSAttributedString *)attrString;
复制代码
我是分割区~~~大神,女友喊你回家吃饭,你能够先走了。3d
###3、demo 若是以上看完了,还不懂怎么使用的朋友。那不妨看看在下拙劣的demo吧。(注:Label的背景颜色都是在xib(nib)中设置的)code
NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"改变文字间距,间距为6"attributes:@{NSKernAttributeName:@6}];
_label1.attributedText = string;
复制代码
NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"改变文字字体,20号粗体"attributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:20]}];
_label2.attributedText = string;
复制代码
NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"改变文字颜色,绿色"attributes:@{NSForegroundColorAttributeName:[UIColor greenColor]}];
_label3.attributedText = string;
复制代码
NSMutableAttributedString *mutableAttributedstring = [[NSMutableAttributedString alloc] initWithString:@"改变文字边框颜色宽度,这二者协同使用才有效果,宽度正数为空心(前景色失效),负数描边"];
//空心
[mutableAttributedstring addAttribute:NSStrokeWidthAttributeName value:@3.2 range:NSMakeRange(0, 37)];
[mutableAttributedstring addAttribute:NSStrokeColorAttributeName value:[UIColor greenColor] range:NSMakeRange(0, 37)];
//描边
[mutableAttributedstring addAttribute:NSStrokeWidthAttributeName value:@-5 range:NSMakeRange(38, mutableAttributedstring.length - 38)];
[mutableAttributedstring addAttribute:NSStrokeColorAttributeName value:[UIColor redColor] range:NSMakeRange(38, mutableAttributedstring.length - 38)];
_label4.numberOfLines = 3;
_label4.attributedText = mutableAttributedstring;
复制代码
NSMutableAttributedString *mutableAttributedstring = [[NSMutableAttributedString alloc] initWithString:@"一条删除线,两条删除线,加粗删除线"];
[mutableAttributedstring addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0,5)];
[mutableAttributedstring addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleDouble] range:NSMakeRange(6,5)];
[mutableAttributedstring addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleThick] range:NSMakeRange(12,5)];
_label5.attributedText = mutableAttributedstring;
复制代码
NSMutableAttributedString *mutableAttributedstring = [[NSMutableAttributedString alloc] initWithString:@"一条下划线,两条下划线,加粗下划线"];
[mutableAttributedstring addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0,5)];
[mutableAttributedstring addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleDouble] range:NSMakeRange(6,5)];
[mutableAttributedstring addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleThick] range:NSMakeRange(12,5)];
_label6.attributedText = mutableAttributedstring;
复制代码
NSMutableAttributedString *mutableAttributedstring = [[NSMutableAttributedString alloc] initWithString:@"文字倾斜,文字阴影,压扁文字"];
[mutableAttributedstring addAttribute:NSObliquenessAttributeName value:@1 range:NSMakeRange(0,4)];
//文字阴影
NSShadow *shadow = [[NSShadow alloc] init];
//模糊度
shadow.shadowBlurRadius = 5;
//阴影颜色
shadow.shadowColor = [UIColor yellowColor];
//阴影大小
shadow.shadowOffset = CGSizeMake(2, 5);
[mutableAttributedstring addAttribute:NSShadowAttributeName value:shadow range:NSMakeRange(5,4)];
//压扁文字
[mutableAttributedstring addAttribute:NSExpansionAttributeName value:@0.8 range:NSMakeRange(10,4)];
_label7.numberOfLines = 2;
_label7.attributedText = mutableAttributedstring;
复制代码
NSMutableAttributedString *mutableAttributedstring = [[NSMutableAttributedString alloc] initWithString:@"据外媒报道,美国太空探索技术公司SpaceX原定于北京时间2月18日23时01分,在佛罗里达州发射“龙”无人货运飞船,运送补给物资前往国际太空站,并尝试回收搭载飞船的“猎鹰9”号火箭。但二级火箭在倒计时13秒时因引擎故障,宣布取消发射。\n在发射暂停后约10分钟后,SpaceX首席执行官埃隆·马斯克(Elon Musk)在社交媒体上发布消息称:“一切运行正常,除了二级火箭发动机转向液压活塞的运动轨迹稍显奇怪,须要进行调查。”"];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
// 字体的行间距
paragraphStyle.lineSpacing = 10;
//首行缩进
paragraphStyle.firstLineHeadIndent = 20.0f;
//(两端对齐的)文本对齐方式:(左,中,右,两端对齐,天然)
// paragraphStyle.alignment = NSTextAlignmentLeft;
//结尾部分的内容以……方式省略 ( "...wxyz" ,"abcd..." ,"ab...yz")
// paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;
paragraphStyle.headIndent = 20;//总体缩进(首行除外)
//设置尾部缩进后就出问题
// paragraphStyle.tailIndent = 2;//尾部缩进
paragraphStyle.minimumLineHeight = 10;//最低行高
paragraphStyle.maximumLineHeight = 20;//最大行高
// paragraphStyle.paragraphSpacing = 15;//段与段之间的间距
paragraphStyle.paragraphSpacingBefore = 22.0f;//段首行空白空间/* Distance between the bottom of the previous paragraph (or the end of its paragraphSpacing, if any) and the top of this paragraph. */
paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight;//从左到右的书写方向(一共➡️⬇️⬅️三种)
paragraphStyle.lineHeightMultiple = 15;/* Natural line height is multiplied by this factor (if positive) before being constrained by minimum and maximum line height. */
paragraphStyle.hyphenationFactor = 1;//连字属性 在iOS,惟一支持的值分别为0和1
[mutableAttributedstring addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, mutableAttributedstring.length)];
[mutableAttributedstring addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:10] range:NSMakeRange(0, mutableAttributedstring.length)];
_label8.numberOfLines = MAXFLOAT;
_label8.attributedText = mutableAttributedstring;
复制代码
经常使用的也就这些了吧,更深刻仍是用富文本框架吧。orm