在iOS中一段文本部分文本高亮显示非难事,就是利用
NSMutableAttributedString
这个类完成的,可以改变高亮部分的颜色和字号。但是也经常会遇到给文本加角标,即就是高亮部分的背景色为圆角,这个就有难度了,现有的api是不支持的,那该怎么办呢?
方案一、通过增加空字符预留出位置,再在对应的位置增加角标
可以增加\u3000
代表空字符,然后利用文本计算出对应的位置即可。
但是对于UILabel
,默认会去除空格和换行等空白字符,具体字符如:UILabel取消自动Trim空格和换行等空白字符。
方案二、对于行首的角标可利用首行缩进预留位置
具体代码如下:
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
paraStyle.alignment = NSTextAlignmentLeft; //对齐
paraStyle.headIndent = 0.0f;//行首缩进
//参数:(字体大小17号字乘以2,34f即首行空出两个字符)
CGFloat emptylen = label.font.pointSize * 1;
paraStyle.firstLineHeadIndent = emptylen;//首行缩进
paraStyle.tailIndent = 0.0f;//行尾缩进
paraStyle.lineSpacing = 2.0f;//行间距
NSAttributedString *attrText = [[NSAttributedString alloc] initWithString:string attributes:@{NSParagraphStyleAttributeName:paraStyle}];
网友评论