核心文本:使用 CTRunDraw 为每个字母设置框架

问题描述

实现如下效果时,

555

关键是设置每个字母的边框。

要存档,我可以把每个中文字母都转成 NSAttributedString ,然后 CTLine

如何用 CTRunDraw 实现?

这是我试过的代码

        let bggrip = UIImage(named: "xx")

         if let pieces = CTLineGetGlyphRuns(line) as? [CTRun],let first = pieces.first{
                
                let glyphCount = CTRunGetGlyphCount(first)
                
                var frameImg = TextContentConst.bgImgFrame
                var textP = lineOrigin
                for idx in 0..<glyphCount{
                    
                    let typeOriginX = TextContentConst.padding * CGFloat(idx + 1)
                    textP.x = typeOriginX + 5
                    ctx.textPosition = textP
                    frameImg.origin.x = typeOriginX
                    frameImg.origin.y = lineOrigin.y + lineAscent - TextContentConst.bgImgFrame.size.height + TextContentConst.offsetP.y
                    bggrip?.draw(in: frameImg)
                    CTRunDraw(first,ctx,CFRange(location: idx,length: 1))
                      
                }
            }

而且效果是有线的,

9999

如何正常使用CTRunDraw

我什至不知道是否有可能

PS;

中文单词:一望无际

github repo

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...