TextKit-具有背景和间距的UILabel

时间:2018-07-01 16:33:58

标签: swift uilabel textkit nslayoutmanager

我一直在研究this之类的东西。

一切正常,直到我发现导致问题的字符串输入

Case where the issue is present

输入字符串为“这是一个长标题\ n Withssssssss”

基本上,“长”字似乎适合空格,但由于某种原因,它正在下一行绘制。

设置新的属性文本时,我总是以这种方式更新textStorage

textStorage.setAttributedString(attributedText)

我的UILabel的子类调用

layoutManager.enumerateLineFragments(forGlyphRange: range) { (_, usedRect, _, glyphRange, _) indrawText(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

我已经尝试了一切。一些委托方法,四处移动逻辑。.我不明白为什么在下一行中绘制了该字符串。

0 个答案:

没有答案