Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ea2ce9a

Browse files
committed
Update设定指定区间字符串为可点击链接
1 parent a4a3790 commit ea2ce9a

File tree

8 files changed

+111
-69
lines changed

8 files changed

+111
-69
lines changed

‎.DS_Store

2 KB
Binary file not shown.

‎MYCoreText_Example/Controllers(各个场景使用说明)/KeywordViewController.m

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,9 @@ - (MYCoreTextLabel *)coretextLabel
3333
_coretextLabel.keyWordColor = [UIColor redColor]; //设置关键字颜色
3434
_coretextLabel.keyWordBackColor = [UIColor blueColor]; //设置关键字背景高亮色 , 如果不需要可自行调整为透明 或者和背景色一样 , 默认是黄色的
3535

36+
[_coretextLabel setText:@"山脚至山腰是茂盛青翠的马尾松、楠木、云杉、枫树等树林,绵延几十公里,瞬间把游客带进世外桃源。山腰朝上,杂生着三百多种杜鹃树,杜鹃树不高,一米两米不等,马樱花类居多。听导游介绍,"大理三月好风光"时节,三百多种杜鹃花盛开,将苍山装扮成花的海洋。www.google.cn 红色、白色、紫色交相辉映,恍惚人间天堂。海拔四千米以上,由于气候寒冷,草木无法生长,终年积雪,皑皑如白云飘落山顶.苍山巍峨,十九座尖峰高耸入云,山顶白雪皑皑,晶莹剔透,犹如海明威小说中的乞力马扎罗雪峰,"苍山雪"由此而来。雪峰下是草甸,@顺坡势绵延着一望无际的绿草,莽莽苍苍,微风过处,送来阵阵远古苍茫。草丛中,洁白的大雪素展示肤色,蓝色龙胆不停地眨眼,绯红绿绒蒿卖弄衣裳,金色的柴胡在招摇,红色紫云英微笑不停......更有许多不知道名字的杂草一个劲地绿,阳光下开心地开满了花朵,朵朵都在人们眼前盼望,www.baidu.com美丽可爱野花是雪峰的祝福,#是山坡的语言#,#是苍山的心事#,是小草和花朵为沧桑写下的抒情诗歌。成双成对的彩斑蝶于花海中翩翩起舞,嗡嗡的蜜蜂在花瓣间打闹。草甸以下青一色郁郁葱葱的林海,四季青翠的马尾松,笔直修长的杉木,高大俊秀的枫树,@枝繁叶茂的楠木,摇弋多姿的板栗......逍遥的松鼠在树枝间练功,喜鹊逗留树顶啁啾,子规在杜鹃枝缝里跳跃,金丝鸟在草丛嬉戏,@好不热闹!树下,蚂蚁在腐烂落叶堆中穿行......林间仙雾缭绕,清香沁肺。十九峰高耸入云,巍峨雄壮,山峰下沟壑纵横;十八溪流水潺潺,涧泉汩汩,飞瀑挂于岩石悬崖。姊妹山——鸡足山顶庙塔玲珑剔透,金碧辉煌;北面玉龙雪山莽莽苍苍,冰清玉洁。玉局峰下百余米处有个方圆十来亩的圆形水潭,名叫洗马潭,是玉局峰、龙泉峰雪水积淀而成,潭水清澈,滟滟如梦" linkRanges:@[[NSValue valueWithRange:NSMakeRange(2, 4)],[NSValue valueWithRange:NSMakeRange(12, 2)]] keywords:@[@"苍山",@"大理",@"导游"]];
3637

37-
38-
[_coretextLabel setText:@"山脚至山腰是茂盛青翠的马尾松、楠木、云杉、枫树等树林,绵延几十公里,瞬间把游客带进世外桃源。山腰朝上,杂生着三百多种杜鹃树,杜鹃树不高,一米两米不等,马樱花类居多。听导游介绍,"大理三月好风光"时节,三百多种杜鹃花盛开,将苍山装扮成花的海洋。www.google.cn 红色、白色、紫色交相辉映,恍惚人间天堂。海拔四千米以上,由于气候寒冷,草木无法生长,终年积雪,皑皑如白云飘落山顶.苍山巍峨,十九座尖峰高耸入云,山顶白雪皑皑,晶莹剔透,犹如海明威小说中的乞力马扎罗雪峰,"苍山雪"由此而来。雪峰下是草甸,@顺坡势绵延着一望无际的绿草,莽莽苍苍,微风过处,送来阵阵远古苍茫。草丛中,洁白的大雪素展示肤色,蓝色龙胆不停地眨眼,绯红绿绒蒿卖弄衣裳,金色的柴胡在招摇,红色紫云英微笑不停......更有许多不知道名字的杂草一个劲地绿,阳光下开心地开满了花朵,朵朵都在人们眼前盼望,www.baidu.com美丽可爱野花是雪峰的祝福,#是山坡的语言#,#是苍山的心事#,是小草和花朵为沧桑写下的抒情诗歌。成双成对的彩斑蝶于花海中翩翩起舞,嗡嗡的蜜蜂在花瓣间打闹。草甸以下青一色郁郁葱葱的林海,四季青翠的马尾松,笔直修长的杉木,高大俊秀的枫树,@枝繁叶茂的楠木,摇弋多姿的板栗......逍遥的松鼠在树枝间练功,喜鹊逗留树顶啁啾,子规在杜鹃枝缝里跳跃,金丝鸟在草丛嬉戏,@好不热闹!树下,蚂蚁在腐烂落叶堆中穿行......林间仙雾缭绕,清香沁肺。十九峰高耸入云,巍峨雄壮,山峰下沟壑纵横;十八溪流水潺潺,涧泉汩汩,飞瀑挂于岩石悬崖。姊妹山——鸡足山顶庙塔玲珑剔透,金碧辉煌;北面玉龙雪山莽莽苍苍,冰清玉洁。玉局峰下百余米处有个方圆十来亩的圆形水潭,名叫洗马潭,是玉局峰、龙泉峰雪水积淀而成,潭水清澈,滟滟如梦" customLinks:@[@"十九"] keywords:@[@"苍山",@"大理",@"导游"]];
39-
//customLinks : 添加自定义链接字 , 如不需要 , 传nil , 可以添加自定义链接的一些属性
38+
//linkRanges : 指定区间链接 , 如不需要 , 传nil (指定特定区间的字符串为可点击类型)
4039
//keywords : 关键字 ,如不需要,传nil即可
4140
_coretextLabel.delegate = self; //设置代理便可监听点击的文本以及类型
4241
}

‎MYCoreText_Example/MYCoreTextLabel/MYCoreTextLabel.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,6 @@ typedef void(^eventCallback)(NSString *linkString);
158158

159159
+ (instancetype)coreTextLabel;
160160

161-
- (void)setText:(NSString *)text;
162-
163161
/**
164162
设置内容 , linkRanges可以指定 对应range位置的字符串为连接类型 , 代理回调链接类型为MYLinkTypeCustomLink自定义字符串链接类型
165163

‎MYCoreText_Example/MYCoreTextLabel/MYCoreTextLabel.m

Lines changed: 37 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ @interface MYCoreTextLabel ()
1818
@property (nonatomic, strong) UITextView *contentTextView; //文本view
1919
@property (nonatomic, strong) NSMutableArray<MYLinkModel *> *links; //所有的可点击链接模型
2020
@property (nonatomic, strong) NSMutableArray<MYSubCoretextResult *> *allResults;//所有结果
21-
@property (nonatomic, copy) eventCallback touchCallback; //点击链接回调
2221
@property (nonatomic, copy) NSString *text; //文本
2322
@property (nonatomic, strong) NSArray *customLinks; //自定义链接
2423
@property (nonatomic, strong) NSArray *keywords; // 关键字
2524
@property (nonatomic, strong) MYLinkModel *currentTouchLink; //记录当前手指所在链接模型
2625
@property (nonatomic, strong) NSMutableArray<MYLinkModel *> *clickLinksCache; //常规链接模型临时存储 (缓存的目的在于,点击时查询相应模型)
2726
@property (nonatomic, assign,getter=isKeywordConfiged) BOOL keywordConfig; //临时记录
27+
@property (nonatomic, strong) NSArray *linkranges; //用于存储指定范围链接
2828

2929
@end
3030

@@ -60,6 +60,8 @@ - (UITextView *)contentTextView
6060
[MYCoretextResultTool customLinks:_customLinks];
6161
//配置关键字
6262
[MYCoretextResultTool keyWord:_keywords];
63+
//配置指定区间链接
64+
[MYCoretextResultTool linkranges:self.linkranges];
6365
//配置需要展示的链接类型
6466
[MYCoretextResultTool webLink:_showWebLink trend:_showTrendLink topic:_showTopicLink phone:_showPhoneLink mail:_showMailLink];
6567
//剪切表情,获得表情以及链接结果集
@@ -72,48 +74,46 @@ - (UITextView *)contentTextView
7274
{
7375
if (!_links) {
7476
_links = [NSMutableArray array];
75-
7677
//重新生成可点击链接模型,进一步处理,完善包裹区域
7778
__weak typeof(self) weakself = self;
7879
[self.contentTextView.attributedText enumerateAttribute:canClickLinkTag inRange:NSMakeRange(0, self.contentTextView.attributedText.length) options:0 usingBlock:^(id _Nullable value, NSRange range, BOOL * _Nonnull stop) {
7980

80-
NSString *linkString = value;
81+
NSString *linkString = value;
8182
if (!linkString.length) return ;//过滤空字符
8283
if ([_keywords containsObject:linkString]) return ;//屏蔽关键字
83-
84-
MYLinkModel *link = [[MYLinkModel alloc]init];
84+
MYLinkModel *link = [[MYLinkModel alloc]init];
8585
link.range = range;
8686
link.linkText = linkString;
8787
//链接类型整理
88-
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"linkText = %@",linkString];
89-
NSArray * norResults = [weakself.clickLinksCache filteredArrayUsingPredicate:predicate];
90-
MYLinkModel *cachelink = norResults.firstObject;
88+
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"linkText = %@",linkString];
89+
NSArray * norResults = [weakself.clickLinksCache filteredArrayUsingPredicate:predicate];
90+
MYLinkModel *cachelink = norResults.firstObject;
9191
if (cachelink) {
9292
link.linkType = cachelink.linkType;
9393
switch (link.linkType) {
9494
case MYLinkTypeCustomLink:
9595
link.clickBackColor = _customLinkBackColor;
96-
link.clickFont = _customLinkFont;
96+
// link.clickFont = _customLinkFont;
9797
break;
9898
case MYLinkTypetWebLink:
9999
link.clickBackColor = _webLinkBackColor;
100-
link.clickFont = _webLinkFont;
100+
// link.clickFont = _webLinkFont;
101101
break;
102102
case MYLinkTypeMailLink:
103103
link.clickBackColor = _mailLinkBackColor;
104-
link.clickFont = _mailLinkFont;
104+
// link.clickFont = _mailLinkFont;
105105
break;
106106
case MYLinkTypePhoneLink:
107107
link.clickBackColor = _phoneLinkBackColor;
108-
link.clickFont = _phoneLinkFont;
108+
// link.clickFont = _phoneLinkFont;
109109
break;
110110
case MYLinkTypetTopicLink:
111111
link.clickBackColor = _topicLinkBackColor;
112-
link.clickFont = _topicLinkFont;
112+
// link.clickFont = _topicLinkFont;
113113
break;
114114
case MYLinkTypetTrendLink:
115115
link.clickBackColor = _trendLinkBackColor;
116-
link.clickFont = _trendLinkFont;
116+
// link.clickFont = _trendLinkFont;
117117
break;
118118
default:
119119
break;
@@ -167,15 +167,9 @@ - (void)setText:(NSString *)text customLinks:(NSArray<NSString *> *)customLinks
167167
#pragma mark - 添加指定区间链接 , 公共接口
168168
- (void)setText:(NSString *)text linkRanges:(NSArray<NSValue *> *) ranges keywords:(NSArray<NSString *> *)keywords
169169
{
170-
_text = text;
171-
_keywords = keywords;
172-
NSMutableArray *customLinks = [NSMutableArray array];
173-
for (NSValue *rangeValue in ranges) {
174-
NSRange range = rangeValue.rangeValue;
175-
if (range.location + range.length >text.length) continue;
176-
[customLinks addObject:[text substringWithRange:range]];
177-
}
178-
_customLinks = customLinks;
170+
_text = text;
171+
_keywords = keywords;
172+
_linkranges = ranges;
179173
}
180174

181175
#pragma mark - 开始渲染
@@ -507,45 +501,45 @@ - (void)judge
507501
}
508502

509503
//文本内容
510-
if (!_textFont) _textFont = [UIFont systemFontOfSize:14.f];
511-
if (!_textColor) _textColor = [UIColor blackColor];
504+
if (!_textFont) _textFont = [UIFont systemFontOfSize:14.f];
505+
if (!_textColor) _textColor = [UIColor blackColor];
512506
if (!_imageSize.width||
513-
!_imageSize.height) _imageSize = CGSizeMake(_textFont.lineHeight, _textFont.lineHeight);
514-
if (!_linkBackAlpha) _linkBackAlpha = 0.5f;
507+
!_imageSize.height) _imageSize = CGSizeMake(_textFont.lineHeight, _textFont.lineHeight);
508+
if (!_linkBackAlpha) _linkBackAlpha = 0.5f;
515509

516510
//网址链接
517-
if (!_webLinkFont) _webLinkFont = _textFont;
518-
if (!_webLinkColor) _webLinkColor = [UIColor blueColor];
519-
if (!_webLinkBackColor) _webLinkBackColor = [UIColor blueColor];
511+
if (!_webLinkFont) _webLinkFont = _textFont;
512+
if (!_webLinkColor) _webLinkColor = [UIColor blueColor];
513+
if (!_webLinkBackColor) _webLinkBackColor = [UIColor blueColor];
520514

521515
//话题链接
522516
if (!_topicLinkFont) _topicLinkFont = _textFont;
523-
if (!_topicLinkColor) _topicLinkColor = [UIColor blueColor];;
517+
if (!_topicLinkColor) _topicLinkColor = [UIColor blueColor];;
524518
if (!_topicLinkBackColor) _topicLinkBackColor = [UIColor blueColor];
525519

526520
//@链接
527-
if (!_trendLinkFont) _trendLinkFont = _textFont;
521+
if (!_trendLinkFont) _trendLinkFont = _textFont;
528522
if (!_trendLinkColor) _trendLinkColor = [UIColor blueColor];
529-
if (!_trendLinkBackColor) _trendLinkBackColor = [UIColor blueColor];
523+
if (!_trendLinkBackColor) _trendLinkBackColor = [UIColor blueColor];
530524

531525
//手机号链接
532-
if (!_phoneLinkFont) _phoneLinkFont = _textFont;
533-
if (!_phoneLinkColor) _phoneLinkColor = [UIColor blueColor];
534-
if (!_phoneLinkBackColor) _phoneLinkBackColor = [UIColor blueColor];
526+
if (!_phoneLinkFont) _phoneLinkFont = _textFont;
527+
if (!_phoneLinkColor) _phoneLinkColor = [UIColor blueColor];
528+
if (!_phoneLinkBackColor) _phoneLinkBackColor = [UIColor blueColor];
535529

536530
//邮箱链接
537-
if (!_mailLinkFont) _mailLinkFont = _textFont;
538-
if (!_mailLinkColor) _mailLinkColor = [UIColor blueColor];
539-
if (!_mailLinkBackColor) _mailLinkBackColor = [UIColor blueColor];
531+
if (!_mailLinkFont) _mailLinkFont = _textFont;
532+
if (!_mailLinkColor) _mailLinkColor = [UIColor blueColor];
533+
if (!_mailLinkBackColor) _mailLinkBackColor = [UIColor blueColor];
540534

541535
//自定义链接
542-
if (!_customLinkFont) _customLinkFont = _textFont;
543-
if (!_customLinkColor) _customLinkColor = [UIColor blueColor];
536+
if (!_customLinkFont) _customLinkFont = _textFont;
537+
if (!_customLinkColor) _customLinkColor = [UIColor blueColor];
544538
if (!_customLinkBackColor) _customLinkBackColor = [UIColor blueColor];
545539

546540
//关键字
547-
if (!_keyWordColor) _keyWordColor = [UIColor blackColor];
548-
if (!_keyWordBackColor) _keyWordBackColor = [UIColor yellowColor];
541+
if (!_keyWordColor) _keyWordColor = [UIColor blackColor];
542+
if (!_keyWordBackColor) _keyWordBackColor = [UIColor yellowColor];
549543
}
550544

551545
#pragma mark - 计算尺寸
@@ -557,7 +551,6 @@ - (CGSize)sizeThatFits:(CGSize)size
557551
if (!self.contentTextView.attributedText.length) {
558552
return CGSizeZero;
559553
}
560-
561554
CGSize viewSize = [self.contentTextView sizeThatFits:CGSizeMake(size.width, size.height)];
562555
return viewSize;
563556
}

‎MYCoreText_Example/MYCoreTextLabel/MYCoretextResultTool.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,21 @@
3636
*/
3737
+ (void)keyWord:(NSArray<NSString *> *)keywords;
3838

39+
/**
40+
需要成为链接的指定范围区间
41+
42+
@param ranges <#ranges description#>
43+
*/
44+
+ (void)linkranges:(NSArray<NSValue *>*)ranges;
45+
/**
46+
是否展示相应的特点
47+
48+
@param web <#web description#>
49+
@param trend <#trend description#>
50+
@param topic <#topic description#>
51+
@param phone <#phone description#>
52+
@param mail <#mail description#>
53+
*/
3954
+ (void)webLink:(BOOL)web trend:(BOOL)trend topic:(BOOL)topic phone:(BOOL)phone mail:(BOOL)mail;
4055

4156
@end

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /