美文网首页111iOS 富文本iOS富文本
iOS 好用的可以点击的富文本label ,可以点击的label

iOS 好用的可以点击的富文本label ,可以点击的label

作者: PittWong | 来源:发表于2017-01-20 17:08 被阅读5349次

XXLinkLabel

可以点击的富文本label

觉得好用记得在github上给点个星星

https://github.com/PittWong/XXLinkLabel

使用说明

超链接�富文本.png

两种内容填充方式

1.直接传入字符串,仅提供正则表达式的点击事件

text_type.gif

2.通过model传入,除正则表达式点击事件外,可提供图片的点击 同时可灵活设置图片大小和点击反馈字符串

model_type.gif

点击事件正则选择

typedef NS_OPTIONS(NSUInteger, XXLinkLabelRegularType) {
    XXLinkLabelRegularTypeNone      = 0,
    XXLinkLabelRegularTypeAboat     = 1 << 0,//@类型
    XXLinkLabelRegularTypeTopic     = 1 << 1,//##类型  话题
    XXLinkLabelRegularTypeUrl       = 1 << 2,//url类型
};
label.regularType = XXLinkLabelRegularTypeAboat | XXLinkLabelRegularTypeTopic | XXLinkLabelRegularTypeUrl;

可根据需要自由设置链接文字颜色

@property (nonatomic ,strong) UIColor *linkTextColor;
@property (nonatomic ,strong) UIColor *selectedBackgroudColor;

自定义添加需要正则的点击事件

[label addRegularString:@"美.*?女"];

点击事件响应 提供block和代理两种方式,习惯用哪个用哪个

代理:

- (void)labelImageClickLinkInfo:(XXLinkLabelModel *)linkInfo {
    NSLog(@"----点击了图片----\n%@\n----对应反馈文字----\n%@",linkInfo.message,linkInfo.imageClickBackStr);
}
- (void)labelLinkClickLinkInfo:(XXLinkLabelModel *)linkInfo linkUrl:(NSString *)linkUrl {
    NSLog(@"----点击了链接,链接地址为----\n%@",linkUrl);
}
- (void)labelLinkLongPressLinkInfo:(XXLinkLabelModel *)linkInfo linkUrl:(NSString *)linkUrl {
    NSLog(@"----长按了(点击)-----\n%@",linkUrl);
}
- (void)labelRegexLinkClickWithclickedString:(NSString *)clickedString {
    NSLog(@"----点击了文字----\n%@",clickedString);
}

block:

        label.imageClickBlock = ^(XXLinkLabelModel *linkInfo) {
            NSLog(@"----点击了图片----\n%@\n----对应反馈文字----\n%@",linkInfo.message,linkInfo.imageClickBackStr);
        };
        label.linkClickBlock = ^(XXLinkLabelModel *linkInfo, NSString *linkUrl) {
            NSLog(@"----block点击了链接,链接地址为----\n%@",linkUrl);
        };
        label.linkLongPressBlock = ^(XXLinkLabelModel *linkInfo, NSString *linkUrl) {
            NSLog(@"----block长按了(点击)-----\n%@",linkUrl);
        };
        label.regularLinkClickBlock = ^(NSString *clickedString) {
            NSLog(@"----block点击了文字----\n%@",clickedString);
        };

相关文章

网友评论

  • 不会飞的宝哥:请问如何让这个label自适应宽度,比如一行显示不全自动换行。
  • ame017:您好,请问如何禁用label本身的点击事件呢?
    PittWong:@ame017 目前设计上无法禁用
    PittWong:@ame017 本身的点击事件按目前的设计是没有的,后续可以调整下,可以通过处理本身点击事件代理将事件传递出去曲线救国一下
  • bc5fc030873d:你好作者,XXLinkLabel 确实挺好的,但是如何设置行间距呢?
  • footSInRoad:请问你这个可以实现整个label都可以点击,并且点击的时候知道点击了哪一行并可以获得每一行的内容 可以么?
    footSInRoad:@PittWong O 谢啦!!
    PittWong:这个有点太定制化需求了,整体点击现在就可以,每一行的话技术上也不是问题,但那个通用性不强,暂时还没考虑
  • 流氓也斯文:你好,使用model来填充的话,怎么设置文字的行间距呢?
  • Andy_WangPeng:可以支持cocoapods么?
    PittWong:暂时还没,最近一直比较忙,等过段时间抽空把spec搞一下
  • 此用户名被使用:@里面不能出现符号哦 是个bug:grin:
    此用户名被使用:@PittWong 好像是标点符号都不行,太久了 忘了
    PittWong:是遇到什么符号出问题啦,我看下
  • EvenTime:如果是一串标签字符串能处理吗?用你这个。
    李小南:@_xiaoChun 你好, 怎么解决的啊?
    EvenTime:@PittWong html,现在已经解决了,:blush:
    PittWong:@世界的过客 什么类型的标签啊
  • SHyH5:楼主你好,我用了你的库,label在cell上面点击没有什么反应,是什么原因只有长按会输出。求解
    PittWong:@李小南 可以的,但需要单独响应一个block或者代理
    李小南:@PittWong 你好, 请问支持点击label时, 点击的不是高亮区域的时候, 能不能响应父控件
    PittWong:@SHyH5 整个label拦截了所有的事件,所以点击时优先于cell响应,给label整体点击block负值,或者代理来实现
  • 595adea54121:怎么用啊!
  • Amy_qinbu:当点击链接时它只走label被点击的block,不会走链接点击的block,怎么破
    595adea54121:怎么用啊 !
    PittWong:是不是没设置链接正则
  • Amy_qinbu:您好,请问如何使用您的框架完成我以下需求啊?
    要求: 拿到从后台返回的内容,从中解析出网址然后替换成对应的图片和文字,然后可以点击(效果和微博的网页链接一样)
    Amy_qinbu:@PittWong 但是你的readMe 写的不够详细,看你的案例代码没看明白,所以想直接请教你
    PittWong:@2017你好 用model就可以实现
  • Amy_qinbu:亲,现在能把您的框架更新下吗,急用哦
    Amy_qinbu:@PittWong 好的,谢谢哈
    PittWong:@2017你好 ok了,习惯用block就用labelClickedBlock,习惯用代理就用labelClickedWithExtend
  • Amy_qinbu:您好,使用了您的这个三方库,但是这个label会阻碍它父视图的点击事件响应,怎么处理啊
    Amy_qinbu:@PittWong 现在可以了吗
    Amy_qinbu:@PittWong 谢谢哈
    PittWong:@2017你好 添加了一个label被点击的block,还没同步上去代码,今晚同步一下就可以用了

本文标题:iOS 好用的可以点击的富文本label ,可以点击的label

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