-
先看看设计稿、
18B9D3FF-D560-462F-94EA-660702034595.png
需求是这个样子的,一段文字存在一些子串的颜色和文本颜色不一样
那么我们需要的参数就是
1.文本内容
2.需要突出显示的文字(可能是多个)
3.突出显示的文字颜色(可能是多个) -
头文件
/**
* 富文本标签
*
* @param frame Frame
* @param txt 整体内容
* @param attribuateText 需要突出显示的文字
* @param attribuateTextColor 需要突出显示的文字颜色
*
* 两个数组长度必须一致
* @return Instance
*/
- (instancetype)initWithFrame:(CGRect)frame
text:(NSString*)txt
attribuateText:(NSArray*)attribuateText
attribuateTextColor:(NSArray*)attribuateTextColor;
- 具体实现
- (instancetype)initWithFrame:(CGRect)frame
text:(NSString*)txt
attribuateText:(NSArray*)attribuateText
attribuateTextColor:(NSArray*)attribuateTextColor
{
if (self = [super initWithFrame:frame])
{
NSMutableAttributedString * attribuateStr = [[NSMutableAttributedString alloc] initWithString:txt];
for (int i = 0; i<attribuateText.count; i++)
{
NSString * str = attribuateText[i];
UIColor * color = attribuateTextColor[i];
[attribuateStr addAttribute:NSForegroundColorAttributeName value:color range:[txt rangeOfString:str]];
}
[self setText:txt];
[self setTextColor:[UIColor whiteColor]];
[self setAttributedText:attribuateStr];
}
return self;
}
- 这个里面还存在的问题
1.两个数组参数未作类型的限制
2.对两个数组长度的一致性未做处理
3.填入attribuateText中的内容必须为txt的子串
有需要的小伙伴可以自行加上去~
网友评论