如何解决核心文本:CTLineGetGlyphRuns 为 SceneDelegate 项目渲染奇怪
使用 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 举报,一经查实,本站将立刻删除。