此前一直犹豫要不要写个自己的异步渲染库,最近赶上疫情,正好有时间,花了几周,完善了一个富文本的异步渲染库,源码地址 LRJAansyDraw,
功能如下
1,文本响应区域自定义,高度预计算
2,方便加入图片,并设置位置,方便加入标签
3,自定义断行,异步渲染,永不卡顿
4 ,富文本的简易设置与自定义删除线,分割线等等, 还有很多其他的功能方便用户自行扩展
5, 自定义的item重新生成一个新的图片,非常方便,意味着,你上次绘制的内容可以方便的生成图片
6,如果有任何其他的需求,请联系作者
LRJ_SampleCoreTextView *viewBase = [LRJ_SampleCoreTextView new];
LRJ_MutableAttributedItem *itme1 = [[LRJ_MutableAttributedItem alloc] initWithText:@"异步绘制的基础demo"]; [itme1 setFont:[UIFont systemFontOfSize:18]];
[itme1 setColor:[UIColor redColor]]; LRJ_MutableAttributedItem *itme2 = [[LRJ_MutableAttributedItem alloc] initWithText:@"点击相应区域"];
[itme2 addTarget:self action:@selector(pushAction:) forControlEvents:UIControlEventTouchUpInside]; [itme2 setFont:[UIFont systemFontOfSize:18]];
[itme2 setColor:[UIColor orangeColor]]; [itme1 appendAttributedItem:itme2]; [itme1 appendWhiteSpaceWithWidth:20]; viewBase.backgroundColor = [UIColor blackColor]; __weak typeof(viewBase) weakViewBase = viewBase;
viewBase.trancatedBlock = ^{ weakViewBase.numerOfLines = 0;
CGSize size = [itme1.resultString wmg_sizeConstrainedToWidth:[UIScreen mainScreen].bounds.size.width - 20 numberOfLines:0];
weakViewBase.frame = CGRectMake(10, 10, size.width, size.height); [weakViewBase redraw]; }; viewBase.frame = CGRectMake(10, 10, size.width, size.height + 5);
[self.view addSubview:viewBase];
self.myView = viewBase;
/**
* 设置AttributedItem的删除线波浪线
*
* @param color 波浪线风格
*
*/
- (void)setWaveLineThroughColor:(UIColor *)color;
[itme3 setWaveLineThroughColor:[UIColor redColor]];