- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的书籍布局中有两个 NSTextfields
,但我无法找到返回上一个“页面”的快速方法。书籍大小、字体大小、行大小都会发生变化,因此必须即时计算上一页的文本字符串。图片:
每个 NSTextfields 都有一个 NSTextContainer
,并且它们共享一个 NSLayoutManager
和 NSTextStorage
。
接下来很简单:我获取可见文本的字符范围,然后从下一个字符开始创建一个子字符串。
我的返回方法是一个拼凑。我计算出一次可以看到的最大字符数。然后,我制作一个达到该长度的字符串,最后一个字符是我想要在书的右下角的字符。然后我循环:从头开始删除字符,每次检查可见的内容,直到我想要的字符位于右下角。这非常非常慢。
任何人都可以建议一种更快的方法来实现我想要实现的目标吗?我想过使用 scrollRangeToVisible
,但我不知道如何为此布局设置 NSScrollView
。
有人可以帮忙吗?
文本容器的设置如下:
-(void)setupTextViews {
articleString = [[NSAttributedString alloc] init];
articleStringPortion = [[NSAttributedString alloc] init];
bookTextStorage = [[NSTextStorage alloc] init];
bookLayoutManager = [[NSLayoutManager alloc] init];
[[self bookTextStorage] addLayoutManager:bookLayoutManager];
leftColumnRect = NSZeroRect;
rightColumnRect = NSZeroRect;
NSDivideRect(bookRect, &leftColumnRect, &rightColumnRect, NSWidth(bookRect) / 2, NSMinXEdge);
// First column
{
NSTextContainer *textContainer = [[NSTextContainer alloc] initWithContainerSize:leftColumnRect.size];
leftColumnTextView = [[CRMouseOverTextView alloc] initWithFrame:leftColumnRect textContainer:textContainer];
[leftColumnTextView setDrawsBackground:NO];
[leftColumnTextView setEditable:NO];
[leftColumnTextView setup];
[bookView addSubview:leftColumnTextView];
[bookLayoutManager addTextContainer:textContainer];
[textContainer release];
[leftColumnTextView release];
}
// Second column
{
NSTextContainer *textContainer = [[NSTextContainer alloc] initWithContainerSize:rightColumnRect.size];
rightColumnTextView = [[CRMouseOverTextView alloc] initWithFrame:rightColumnRect textContainer:textContainer];
[rightColumnTextView setDrawsBackground:NO];
[rightColumnTextView setEditable:NO];
[rightColumnTextView setup];
[bookView addSubview:rightColumnTextView];
[bookLayoutManager addTextContainer:textContainer];
[textContainer release];
[rightColumnTextView release];
}
}
发布我糟糕的后退代码是没有意义的,但我正在使用我发现的这种方法来找出每次可见的内容:
-(NSRange)getViewableRange:(NSTextView *)tv {
NSLayoutManager *lm = [tv layoutManager];
NSRect visRect = [tv visibleRect];
NSPoint tco = [tv textContainerOrigin];
visRect.origin.x -= tco.x;
visRect.origin.y -= tco.y;
NSRange glyphRange = [lm glyphRangeForBoundingRect:visRect inTextContainer:[tv textContainer]];
NSRange charRange = [lm characterRangeForGlyphRange:glyphRange actualGlyphRange:nil];
return charRange;
}
最佳答案
我不确定这就是您正在寻找的答案,但如果是我,我可能会为之前查看过的所有页面“缓存”一堆这些字符范围。对于一本有很多页的书来说,将它们全部存储起来可能不会有任何问题。当然,当用户调整文本大小或其他任何事情时,您仍然必须使用笨拙的代码。 (要么,或者你可以从一些合适的起点重新计算......如果足够快,就说书的开头,或者一章的开头或其他东西。然后你只需找到包含以下内容的页面(范围)已经显示的文本并显示前一个文本。)
关于objective-c - 书籍布局 NSTextFields——返回页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10700408/
揭开网络爬虫的神秘面纱 嗨,亲爱的读者朋友们,今天我想和大家分享一下我对Python3网络爬虫书籍的一些心得体会。网络爬虫就像是一位善于探险的探险家,穿越数字世界的丛林,捕捉着信息的脉搏。 历经荆棘,
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我是 JavaScipt 新手,我无法理解下面的代码 maskat.lang.Class.declare("maskat.key.KeyEventManager", { _static: {
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭11 年前。 Improve th
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 5 年前。
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在开发一个应用程序,允许用户用户查看他们有权访问的收件箱的内容。除了 之外,我很难找到一种搜索全局地址列表的方法 AddressEntries entries = global.AddressEn
人们常常问我有什么C++和编程的书籍推荐,今天就为大家分享了几本 第一个注意项:如果你打算学习C++,请务必学习最新版的C++ 2011。这个版本的C++移除了许多由C++强大带来的一些痛苦之处。
我需要为一本书创建一个索引。虽然乍一看这项任务很简单——按第一个字母对单词进行分组,然后对它们进行排序——但这个显而易见的解决方案仅适用于美国语言。然而,真正的词要复杂得多。参见 http://en.
我是一名开发人员,将我们的 IIS 服务器的管理职责交给了他。在设置网站、虚拟目录等方面,我对 IIS 相当熟悉,但我想如果我要完全成为服务器的管理员,我最好尽快跟上。 有什么关于 IIS 书籍的推荐
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
如果我在网站上看到很酷的效果,我会查看 jquery 的源代码,通常我可以理解它,但是,我正在查看 http://www.mckinsey.com 的 slider 。并查看了用于进行页面幻灯片的 j
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
方法(对象的函数)可以使用“this”关键字来引用对象的变量。 函数的属性可以引用函数变量吗? 例如:- function foo() { var x=5; }
我有以下型号。 Book has Articles (Article has foreign key to Book) Article has Images (Article has upto #ma
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。
我是一名优秀的程序员,十分优秀!