我有一个NSLayoutManager、两个NSTextContainers和一个NSTextStorage对象。
我将字符串逐个添加到textStorage对象中,直到第一个textContainer已满,然后使用添加到该textContainer的文本量在我的图书应用程序中绘制一个页面。
99%的时间,didCompleteLayoutForTextContainer中的isAtEnd标志会告诉我第一个文本容器什么时候满了。
然而,在极少数情况下,如果我向textStorage添加一个字符串,它实际上会从第一个文本容器中删除文本!
例如,当第一个文本容器中包含此字符串(且几乎已满)时:
\n\n\n\n\n\nMexico \n\nBook Covers from Germany \n\n \n\n \n\n Book Covers from Germany Special Edition \n\nBook Covers from Denmark Sweden \n\nBook Covers from Japan \n\nBook Covers From Finland \n\nBook Covers From Greece如果我将此字符串添加到textStorage:
Spain \n\nBook Covers From Iceland \n\nBook Covers From Netherlands \n\nBook Covers from NorwaylayoutManager将把单词“希腊”从第一个textContainer移到第二个textContainer。
我宁愿让layoutManager告诉我第一个textContainer已满,然后再尝试添加一个新字符串,并让它执行这种意外行为。
谁能告诉我为什么会这样?或者告诉我如何判断这种情况何时会再次发生,这样我才能确定第一个textContainer何时真正满了?
谢谢!
发布于 2016-01-26 20:43:13
可以创建NSTypesetter的子类并覆盖layoutParagraphAtPoint()方法。此方法返回下一个字符,该字符将位于nexy段落的开头,或者可能位于textContainer的末尾-我不确定。
https://stackoverflow.com/questions/34618955
复制相似问题