美文网首页富文本标签
一个简单的富文本标签

一个简单的富文本标签

作者: SincereDu | 来源:发表于2016-07-27 11:16 被阅读264次
    • 先看看设计稿、


      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的子串
      有需要的小伙伴可以自行加上去~

    相关文章

      网友评论

        本文标题:一个简单的富文本标签

        本文链接:https://www.haomeiwen.com/subject/iqsojttx.html