iOS中的异步渲染探究,以及基于异步渲染的高度自定富文本框架构建
此前一直犹豫要不要写个自己的异步渲染库,最近赶上疫情,正好有时间,花了几周,完善了一个富文本的异步渲染库,源码地址 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;
此处放入一些简单的效果展示,并不代表只有这些功能,只是暂时满足绝大多数场景的需求
结尾 :此库力求好用,希望有此需要的同学,能够使用,并且我会积极去丰富更多的功能,也可以提给我更多的你所需要的功能
补充:另外提供了很多点击区域响应,控制点击样式或者点击相应区域自定义
补充2:参考部分同学提出的需求,完成了虚线和波浪线的需求
用法:
/**
* 设置AttributedItem的删除线波浪线
*
* @param color 波浪线风格
*
*/
- (void)setWaveLineThroughColor:(UIColor *)color;
[itme3 setWaveLineThroughColor:[UIColor redColor]];