iOSAPP & program

2022-07-04

2022-07-04  本文已影响0人  23bd05ea194f

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;

此处放入一些简单的效果展示,并不代表只有这些功能,只是暂时满足绝大多数场景的需求

image

结尾 :此库力求好用,希望有此需要的同学,能够使用,并且我会积极去丰富更多的功能,也可以提给我更多的你所需要的功能

补充:另外提供了很多点击区域响应,控制点击样式或者点击相应区域自定义

image

补充2:参考部分同学提出的需求,完成了虚线和波浪线的需求

IMG_3730.PNG.JPG

用法:

/**
 * 设置AttributedItem的删除线波浪线
 *
 * @param color 波浪线风格
 *
 */
- (void)setWaveLineThroughColor:(UIColor *)color;

[itme3 setWaveLineThroughColor:[UIColor redColor]];
上一篇 下一篇

猜你喜欢

热点阅读