我试图通过以下代码获取显示给定文本容器中文本所需的矩形大小:
s = [manager usedRectForTextContainer:container].size;
我希望文本有多行,但它会在一行结尾处切断,并且不会显示下一行的内容。只有当有一些额外的字符时才会发生这种情况;在大约60个字符的行中,将有大约10或15个剩余部分显示在下一行但不显示。
这可能是插件的问题吗?也许文字包装?我真的不确定,因为我对iOS和UI编程都很陌生。
修改:在上面的代码中,经理是NSLayoutManager
,容器是NSTextContainer
。
我很确定这个问题的输出是问题,因为在这个函数调用之后,如果我将s的值更改为我期望的值,我会得到预期的布局,显示整个字符串
有关布局管理器的信息是
<NSLayoutManager: 0xd203f60>
1 containers, text backing has 140 characters
Currently holding 140 glyphs.
Glyph tree contents: 140 characters, 140 glyphs, 1 nodes, 32 node bytes, 384 storage bytes, 416 total bytes, 2.97 bytes per character, 2.97 bytes per glyph
Layout tree contents: 140 characters, 140 glyphs, 62 laid glyphs, 2 laid line fragments, 3 nodes, 96 node bytes, 856 storage bytes, 952 total bytes, 6.80 bytes per character, 6.80 bytes per glyph, 31.00 laid glyphs per laid line fragment, 476.00 bytes per laid line fragment
我希望在这种情况下会有三行,但看起来只有2行片段,这意味着我的布局管理器可能存在问题?
答案 0 :(得分:0)
您正在创建自己的文本容器,但您还需要对其进行配置。您需要设置lineBreakMode和您可能想要显示的numberOfLines。
在你的情况下,我是预备
textContainer.lineFragmentPadding = 0.0
textContainer.lineBreakMode = label.lineBreakMode
textContainer.maximumNumberOfLines = label.numberOfLines