最近项目里需要处理文本解析,将一段文本中的<a href="xxxxx" target="_blank" rel="external nofollow" >这是一个链接</a>自动解析成: (这是一个链接),点击响应跳转事件。
尝试使用了 TTTAttributedLabel,发现对中文支持不太好。主要是我这里需要根据文本计算行高。
- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode;
使用以上方法计算的行高与TTTAttributedLabel实际绘制文本所需要的行高不一致,会比实际所需的要少。(实测英文一般没问题,使用长短不同文本多次测试,发现也有略微高度不匹配情况,但不明显)。
这里使用的是默认字体设置,比如[UIFontsystemFontOfSize:13]。
目前找到个暂时的解决方案,uifont使用中文字体:"STHeitiJ-Light"。这样能保证计算出来的行高满足TTTAttributedLabel绘制所需。
但是还有个问题,这样计算的行高有时候会比实际绘制的要高,结果就是文本会有那么一两行空白。
观察发现设置中文字体后行间距变小了,于是考虑设置较大的行间距以补漏,但是尝试设置label的leading仍无法完美解决.
(由于我这边labe的宽度是固定的,字体大小也是固定的,我尝试设置了一个较为合适的leading值。目前暂时这么解决了,感觉比较山寨。)
以后抽时间得好好研究下Coretext。
如果哪位有完美的解决方案,望能分享,多谢