关于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、 <a> </a>的点击事件通过delegate来实现。

@protocol RTLabelDelegate <NSObject>

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

@end

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

urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

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

render函数中.png

只要改为这样即可:


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

在这里记录一下

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容