问题描述
使用 Core Text 实现这样的效果,
我有这样的数据,
-
NSAttributedString(string: "郑",attriOne)
-
NSAttributedString(string: "郑和 郑重",attriTwo)
所以我应该有两个 CTRun。
在没有 SceneDelegate
(旧时代)的项目中,我得到了两个 CTRun。
在带有 SceneDelegate
的项目中,我得到了 5 个 CTRun。
下面的代码有效,我不知道为什么?
let bggrip = UIImage(named: "xxx")
func drawPairs(context ctx: CGContext,ln line: CTLine,startPoint lineOrigin: CGPoint,ascent lineAscent: CGFloat){
if let pieces = CTLineGetGlyphRuns(line) as? [CTRun]{
let pieceCnt = pieces.count
var zeroP = lineOrigin
for j in 0..<pieceCnt{
switch j {
case 0:
var frame = TextContentConst.bgImgFrame
frame.origin.y = lineOrigin.y + lineAscent - TextContentConst.bgImgFrame.size.height + TextContentConst.offsetP.y
// draw image
bggrip?.draw(in: frame)
zeroP.x += TextContentConst.offsetP.x
case 1:
zeroP.x = 92
default:
()
}
ctx.textPosition = zeroP
// draw text
CTRunDraw(pieces[j],ctx,CFRange(location: 0,length: 0))
}
}
}
对于 1...5 CTRun,ctx.textPosition.x = 92
,
但实际的字形效果很好,不像我设置的那样。
为什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)