yylabel支持html ios,iOS简单高性能标签TagView(巧用YYLabel)

我相信不少人在开发者都有这样的需求,标签展现(以下图)数组

5bdb47108a93ee62c59403f098994032.png

不少人均可以本身实现(网上别人写的也不少,可是别人写的总有不知足本身需求的点),实现的方法也不少种,好比动态添加view,使用UICollectionView等等。这种实现方法不是很差,可是当列表比较复杂,数据比较多的时候,可曾想过性能会怎么样呢?缓存

在一次深刻了解富文本的时候,突发其想,好像富文本能达到这种效果,也就是一个label就能够实现这种标签的效果了,效果性能就不用多说了,再加上YYLabel的异步绘制,真是锦上添花啊。app

XWTagView(高性能标签)异步

XWTagMaker(标签外观配置)布局

以上就是标签外观的一些属性,注释得很清楚,包含了对齐方式,每一个属性都有默认值,maxWidth这个属性是必须非空的以便计算高度和换行(默认值是屏幕宽度)性能

XWTagView(继承自YYLabel)测试

XWTagView.h字体

XWTagView.m主要代码atom

细心的同窗会发现要怎么知道他的高度?(固然若是您用的是自动布局能够不用管这个属性,毕竟label自动布局会自动自适应)从上面代码能够看出来,最后返回的是富文本NSMutableAttributedString,为了更加方便,我便为NSMutableAttributedString扩展了个高度属性tagHeight(当前标签富文本的高度以便外部获取使用和缓存),具体看如下代码spa

看起来很简单,也很容易理解(就是把标签数组变成一个富文本已达到标签的效果),接下来就看看怎么用吧

看起来是否是很简单,一个make就能够配置标签样式了,若是您是比较复杂的列表的话,这样一个label实现的标签性能彻底不用担忧,若是您是个追求性能的人,能够开启YYLabel的异步绘制displaysAsynchronously。效果图以下

0c68a0aa0436317fea906c862423270c.png

tagLeft.png

3c0c21a0cff69300b01f11dfb876c8ce.png

tagRight.png

当我觉得大功告成的时候,最后仍是让我发现了个问题,从上面代码能够看出标签的的左右间隔是用空字符串隔开的(这是一个缺陷,有比较好的解决方法的能够联系我),说到这细心的同窗应该能够猜到是什么问题了,大家可曾注意过当label右对齐的时候,最右边的空格或者空字符串是不起做用的,最终想到了个解决办法,可能不是最好的解决方案,可是足以解决出现的问题,详细的见以下代码

熟悉富文本的同窗都知道tailIndent是与尾部的距离,利用好这一点能够很好的解决问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值