我一直在研究this之类的东西。
一切正常,直到我发现导致问题的字符串输入
输入字符串为“这是一个长标题\ n Withssssssss”
基本上,“长”字似乎适合空格,但由于某种原因,它正在下一行绘制。
设置新的属性文本时,我总是以这种方式更新textStorage
textStorage.setAttributedString(attributedText)
我的UILabel的子类调用
layoutManager.enumerateLineFragments(forGlyphRange: range) { (_, usedRect, _, glyphRange, _) in
在drawText(in rect:)
内
glyphRange在这里为第一个LineFragments返回location 0 and length 15
(直到long),并且rect的大小是您在图片中看到的,因为这是我用来创建贝塞尔曲线的路径。
这些是TextKit所有对象的设置
let textContainer = NSTextContainer()
textContainer.heightTracksTextView = true
textContainer.lineFragmentPadding = 0
let layoutManager = NSLayoutManager()
layoutManager.usesFontLeading = false
layoutManager.allowsNonContiguousLayout = true
translatesAutoresizingMaskIntoConstraints = false
backgroundColor = .clear
lineBreakMode = .byCharWrapping
textContainer.lineBreakMode = lineBreakMode
layoutManager.addTextContainer(textContainer)
textStorage.addLayoutManager(layoutManager)
isUserInteractionEnabled = true
我已经尝试了一切。一些委托方法,四处移动逻辑。.我不明白为什么在下一行中绘制了该字符串。