iOS - UILabel点击选中文字,部分高亮,YYLabel

最近有这个一个小需求,有这样一个tipLabel:"添加QQ:670360112 进行在线咨询" 。其中qq号要求高亮并且可以点击复制,并弹出提示框提示复制成功。

好吧,需求基本是这样,在研究很久之后,发现YYLabel可以搞定。

简单介绍一下YYLabel,它是YYText里边的一个控件,YYText可以在GitHub上找到:https://github.com/ibireme/YYText


- (YYLabel *)yyLabel {
    if (nil == _yyLabel) {
        _yyLabel = [YYLabel new];
        _yyLabel.numberOfLines = 0;
        NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:@"添加QQ 670360112 进行在线咨询"];
        text.yy_font = kFT4;
        text.yy_color = kCL3;
        [text yy_setTextHighlightRange:NSMakeRange(6, 10)
                                 color:kThemeColor
                       backgroundColor:[UIColor whiteColor]
                             tapAction:^(UIView *containerView, NSAttributedString *text, NSRange range, CGRect rect){
                                 UIPasteboard *pboard = [UIPasteboard generalPasteboard];
                                 pboard.string = @"670360112";
                                 [CMAlert show:@"复制成功"];
                             }];
        
        _yyLabel.attributedText = text;
    }
    return _yyLabel;
}
其中我用到了自己集成的CMAlert,tapAction这个Block是点击处理Block。

剪切版的控制:

UIPasteboard *pboard = [UIPasteboard generalPasteboard];
pboard.string = @"670360112";
控制高亮的范围:

NSMakeRange(6, 10)

需要添加的头文件:

#import "YYLabel.h"
#import "NSAttributedString+YYText.h"

这两个头文件都在YYText第三方里,需要安装YYText,推荐cocoaPods安装。

下图是点击了黄色QQ号之后的截图

iOS - UILabel点击选中文字,部分高亮,YYLabel_第1张图片

你可能感兴趣的:(iOS)