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中
只要改为这样即可:
NSString *btnUrl = [[linkableComponents.attributes objectForKey:@"href"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
btnUrl =[btnUrl stringByReplacingOccurrencesOfString:@" " withString:@" "];
[button setUrl:[NSURL URLWithString:btnUrl]];
在这里记录一下