usedRectForTextContainer for NSTextContainer返回不正确的高度

时间:2014-08-05 21:41:41

标签: ios objective-c user-interface

我试图通过以下代码获取显示给定文本容器中文本所需的矩形大小:

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行片段,这意味着我的布局管理器可能存在问题?

1 个答案:

答案 0 :(得分:0)

您正在创建自己的文本容器,但您还需要对其进行配置。您需要设置lineBreakMode和您可能想要显示的numberOfLines。

在你的情况下,我是预备

textContainer.lineFragmentPadding = 0.0
textContainer.lineBreakMode = label.lineBreakMode
textContainer.maximumNumberOfLines = label.numberOfLines