实现下面的效果
可以使用很多控件,
左边红框内,一个 UILabel;
右边红框内,一个 UILabel
很多个 UILabel 码起来
使用 CoreText 可以用一个控件,实现绘制
思路:
先把原文,转化为下面的
再把第二张,转化为最初的效果
先要弄出一个类似结构的富文本
保证每一行的 Y 坐标,可控
( 保证非右边红框的内容,与最终一致)
( 保证右边红框的内容,其行数和 y 坐标,与最终一致)
- 富文本,转化为 CTFrame 一, 出现第二张图,( 把右边红框内的文本,处理掉 )
关键是,把右边红框内的富文本,合理拆分出来
CTFrame 一,宽度 = 右边红框内的富文本的宽度 + 50
- 右边红框富文本,转化为 CTFrame 二 , 糊到上一步空出的地方
右边红框内的文字,自然不能用 CTFrame 一
一个右边的红框,就是一个 CTFrame 二
给一个字符串,怎么知道它有多少行
字符串,转化为富文本,
富文本,转化为 CTLine,
拿到 CTLine 的宽度 lineWidth,
知道文本框的宽度 containerWidth,
行数 = Int(ceil(lineWidth / containerWidth))
实现:
例子数据
[
{
"string" : "世界が終るまでは",
"type" : 6
},
{
"string" : "世界が終わる前に 聞かせておくれよ",
"title" : "歌詞:",
"type" : 7
},
{