关于RTLabel链接包含中文的修改

RTLabel,一个iOS的富文本封装,地址:https://github.com/honcheng/RTLabel
(很久没有更新的三方类,我也是在老项目中遇见的)。
关于RTLabel的使用,网上也挺多的资料的,使用的方法也很简单,提供的功能也可以满足多数的富文本。
使用步骤:
1、将RTLabel.h和RTLabel.m拖入项目中
2、引入 CoreText.framework(基于 CoreText.framework)
3、初始化

    rtLabel = [RTLabel new];
    rtLabel.font = textFont;
    rtLabel.textColor = [UIColor darkGrayColor];
    rtLabel.delegate = self;
    rtLabel.userInteractionEnabled = YES;
    [self.view addSubView:rtLabel];

4、 的点击事件通过delegate来实现。

@protocol RTLabelDelegate 

- (void)rtLabel:(id)rtLabel didSelectLinkWithURL:(NSURL*)url;

@end

很简单,这里要说坑是,就是这个类库很少更新了,所以在链接中含有汉字的话,这个类就会出错,不能正常使用。
这个东西是因为:NSURL urlWithString 中包含中文的时候转化为nsnull
改为

urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

即可。
具体的位置在RTLabel.m中

关于RTLabel链接包含中文的修改_第1张图片
render函数中.png

只要改为这样即可:


NSString *btnUrl = [[linkableComponents.attributes objectForKey:@"href"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
btnUrl =[btnUrl stringByReplacingOccurrencesOfString:@" " withString:@" "];
[button setUrl:[NSURL URLWithString:btnUrl]];

在这里记录一下

你可能感兴趣的:(关于RTLabel链接包含中文的修改)