Core Text 实践 +:自动换行,与字级别的控制

本文通过 3 个例子,继续讲述 Core Text 实践上的思路前文已经实现了控制每个字的位置,Core Text 实践:自定义每个字的位置一个格子,一个字一个字,一个富文本,一个 CTLine,先画背景图,再画文字,即可例子一,在前文的基础上,实现自动换行将原本的两行 “椿\n赤い椿”,转换为一行 “椿 赤い椿”,剩下的,就容易了把每个字,转化为格子,遇到空格,就跳过模型处理模型长这样,struct Coupling: Decodable { var string:
摘要由CSDN通过智能技术生成

本文通过 3 个例子,继续讲述 Core Text 实践上的思路

前文已经实现了控制每个字的位置,

截屏2021-03-23 下午4.28.06.png

Core Text 实践:自定义每个字的位置

一个格子,一个字

一个字,一个富文本,一个 CTLine,

先画背景图,再画文字,即可

例子一,在前文的基础上,实现自动换行

截屏2021-03-23 下午4.24.20.png

将原本的两行 “椿\n赤い椿”,

转换为一行 “椿 赤い椿”,

剩下的,就容易了

把每个字,转化为格子,

遇到空格,就跳过

模型处理

模型长这样,

struct Coupling: Decodable {
    var string: String
    let type: Int
}

数据是这样一个 list, [Coupling]

现在要做合并,

能够放在一行,就放在一行,

不能够放在一行,就换行

数据样式: 标题 , 很多格子,标题,其他(略)

        // 这个是 result
        var info = [Coupling]()
        // 放置当前的文本
        var current: Coupling?
        for jujube in list{
            switch jujube.type{
            case 4:
                // 格子
                // 拿到当前的格子,看情况
                if var c = current{
                    // 拼接当前和下一个,看看效果
                    let reduceTmp = c.string + " " + jujube.string
                    // 超过一行
                    if reduceTmp.fourW >= TextContentConst.widthInUse{
                        // 就添加当前
                        info.append(c)
                        // 更新当前文本
                        current = jujube
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值