首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSLayoutManager行为?

NSLayoutManager行为?
EN

Stack Overflow用户
提问于 2016-01-06 02:39:31
回答 1查看 91关注 0票数 0

我有一个NSLayoutManager、两个NSTextContainers和一个NSTextStorage对象。

我将字符串逐个添加到textStorage对象中,直到第一个textContainer已满,然后使用添加到该textContainer的文本量在我的图书应用程序中绘制一个页面。

99%的时间,didCompleteLayoutForTextContainer中的isAtEnd标志会告诉我第一个文本容器什么时候满了。

然而,在极少数情况下,如果我向textStorage添加一个字符串,它实际上会从第一个文本容器中删除文本!

例如,当第一个文本容器中包含此字符串(且几乎已满)时:

代码语言:javascript
复制
 \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:

代码语言:javascript
复制
Spain  \n\nBook Covers From Iceland  \n\nBook Covers From Netherlands  \n\nBook Covers from Norway

layoutManager将把单词“希腊”从第一个textContainer移到第二个textContainer。

我宁愿让layoutManager告诉我第一个textContainer已满,然后再尝试添加一个新字符串,并让它执行这种意外行为。

谁能告诉我为什么会这样?或者告诉我如何判断这种情况何时会再次发生,这样我才能确定第一个textContainer何时真正满了?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-01-26 20:43:13

可以创建NSTypesetter的子类并覆盖layoutParagraphAtPoint()方法。此方法返回下一个字符,该字符将位于nexy段落的开头,或者可能位于textContainer的末尾-我不确定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34618955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档