问题标签 [nslayoutmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 使用 NSLayoutManager 计算每个字形的帧数
在这个线程上,Core Text 计算 iOS 中的字母框架,他们能够使用 Core Text 非常精确地计算每个字形的框架。最后的矩形完美地拥抱实际绘制的字形。
使用 NSLayoutManagerboundingRectForGlyphRange:inTextContainer:
似乎并不能准确地返回字形边界框:
并且返回的矩形没有完全包含更复杂的字体(Zapfino 示例):
有谁知道如何复制上述讨论的结果而无需进入仅 iOS 7 应用程序下的 Core Text?
谢谢。
ios - 具有大 NSAttributedString 的 UItextView 的滚动性能问题
我正在为应用程序开发文本编辑器。我正在使用 UITextView
请参阅示例代码以加载文本视图。
文本大小约为 400k 字。
我面临以下问题。
当我向下滚动时,文本滚动变得太慢,有时应用程序由于内存问题而崩溃。我认为iOS在向下滚动textview时将渲染的文本图像保存在其内存中,但是当我向上滚动到顶部时它会释放内存。
如果我点击“全选”,则选择文本需要花费太多时间,并且在文本选择后滚动变得很差,并且有时应用程序由于内存问题而崩溃,因为它的内存增加了。我认为 iOS 在其内存中生成完整文本的图像(好像它对用户可见),然后选择完整的文本并保留其图像,直到选择完成。选择完成后,应用程序会保留内存。
显示大文本的另一种方法是使用多个文本视图并将文本分配给仅像 UITableView 这样的可见文本视图,但这会增加复杂性,因为我必须重新计算 UItextView 的 layoutManager 的每个 textChanged 委托调用所需的文本视图数量.
任何人都知道如何在 UITextView 中以更好的性能显示大型属性文本。
猜猜 iPages 应用程序是如何工作的,因为它会在区域处于可见范围内时显示文本。
ios7 - 如何插入额外的字形?
我想要一个 UITextView 在两种显示模式之间切换。在模式 1 中,它应该显示缩写,在模式 2 中应该显示完整的单词。例如“Abbr”。与“缩写”。
最好的方法是什么?请记住,某些单词可以具有相同的缩写,并且用户可以自由输入完整的单词或缩写?
到目前为止,我试图继承 NSLayoutManager。假设我得到一个缩写字符串并且我必须绘制完整的单词,我将实现以下方法:
}
但是,当我尝试插入 4 个额外的字形时,此方法会抱怨无效的字形索引“_NSGlyphTreeInsertGlyphs 无效字符索引”。
ios7 - 如何在ios7中更改NSAttributedString的字体大小
我已将 a 加载NSAttributedstring
到UITextview
. 该字符串包含具有不同字体大小的文本。我想使用 UISlider
. 所以我试图相应地增加字体大小。我可以为 设置特定的字体大小attributedString
,但我需要动态更改
list - 在 NSTextLayout 上隐藏字形
我有一个带有自定义 NSTextLayout 的 UITextView:
VPLayoutManager.h
VPLayoutManager.m
这段代码隐藏了字形,但 UITextView 仍然可以看到字形(光标仍然“显示”该位置有一个字形,即使现在不可见)......所以问题是:我如何完全隐藏一个字形?
我正在尝试根据段落开头的字符创建列表,其想法是添加一个 unicode 来标识该段落是否是列表的一部分,并在 NSTextLayout 中隐藏此 unicode 并为“绘制”列表。
ios - 从 UITextView 和 NSLayoutManager 获取行信息
为了支持该UIAccessibilityReadingContent
协议,我需要我的 UITextView 来回答我关于它的线路的问题。这些是我需要实现的协议方法:
accessibilityLineNumberForPoint:
<- 提供坐标,返回行号accessibilityContentForLineNumber:
<- 返回给定行的文本accessibilityFrameForLineNumber:
<- 给定一个行号,返回它的帧accessibilityPageContent
<- 整个文本内容。我有。:)
我认为 NSLayoutManager 可以帮助我,但我对它没有那么有经验。我已经弄清楚了一些(我认为),但仍然需要一些帮助。
苹果有一些示例代码(这里)可以让我知道文本视图中的行数:
我认为有了lineRange
上面,我可以使用这种方法计算直线NSLayoutManager
:
并且鉴于lineRanges
我应该能够使用(通过查找lineRange
包含字形索引的点来计算点的行号:
NSString
那么剩下的就是,在给定行号的情况下,我如何获取行的内容(作为)?
ios7 - iOS 7 UITextView:重新打开应用程序后,nstextattachment 的大小变为 2 倍
我正在使用 ios7 中的 Text Kit 构建一个笔记编辑器。早些时候,我在渲染自定义大小的 NSTextAttachment 时遇到了麻烦,因为它在很大程度上减慢了渲染速度。我通过缩放图像然后将它们添加到 textview 解决了这个问题。你可以在 iOS 7.0 UITextView 中找到我的答案,之后变得非常慢向其中添加图像 缩放图像后,textview 渲染运行良好,没有任何延迟。textview 的属性文本存储在核心数据中。在应用程序的运行会话期间,textview 正确显示图像。即使在核心数据中保存属性文本并检索它之后再次显示在 textview 上,图像看起来很好。但是在杀死应用程序并再次运行应用程序后。图像放大到 2 倍大小。在缩放图像时,我使用以下函数并使用 [[UIScreen bounds] scale] 来维护图像质量。
如果我将图像缩放到 1.0,图像不会扩展,但图像质量非常差。
我认为问题出在哪里? 问题在于布局管理器。
我尝试过
的我尝试将 NSLayoutManager 子类化并覆盖
- (void)drawGlyphsForGlyphRange:(NSRange)glyphsToShow atPoint:(CGPoint)origin
我看到的是在运行应用程序的新会话时附件大小加倍。如果我尝试检查附件的大小并调整它的大小。滞后又开始了。我很早就被这个问题困扰了。任何建议都将不胜感激。
ios - NSLayoutManager 可以在后台线程上安全使用吗?
即使 iOS 文档说:
NLayoutManager、NSTextStorage 和 NSTextContainer 可以从子线程访问,只要应用程序保证从单个线程访问即可。
我偶尔会遇到这个异常:
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“仅在主线程上运行!”
这是回溯:
需要注意的一件事是 myNLayoutManager
附加到UITextView
. 您可以将其视为UITextView
用于在后台线程中进行文本布局的普通方法。
那么这是否意味着与文档所说的相矛盾,NLayoutManager
如果它附加到单个后台线程,则不能安全地使用它UITextView
?
ios7 - iOS7使用行间距输入UITextView并使用TextKit保持格式化
我遇到了这个很好的例子,它帮助我理解了如何在使用 iOS7 在 UITextView 中键入时实现行间距/段落间距,但是有一个问题,我希望有人可以帮助我解决我仍在学习的问题关于TextKit请。
这是实际示例 https://github.com/downie/DoubleSpacedTextView
我附上了2个文件:-
1- 这是问题的视频:- http://1drv.ms/1o8Rpd2
2-这是我正在测试的项目:http: //1drv.ms/1o8RtK0
问题是当文本行之间有空行(至少 2 个空行),然后在空行内单击以激活 UITextView 并显示键盘时,文本向上移动/失去其格式。
这是我对原始版本进行了轻微修改的核心功能,它进行了格式化,它工作得很好,但当你第一次在 UITextView 内单击时它就不行了:-
你能看看我们是否可以阻止这种情况发生吗?这样文本在我们输入 UITextView 时总是被格式化。
是否有任何其他示例显示我们如何使用 TextKit 或属性文本将格式化文本(带行距)键入 UITextView?
自iOS6以来,我一直在努力解决这个问题。
谢谢,
将要
ios7 - iOS7 glyphRangeForTextContainer - 选择 UITextView 中的所有字形/所有文本范围
我试图在输入 UITextView 时实现行间距。我有这个功能,当您在 UITextView 内单击时,它似乎只为直到光标位置的所有字符呈现行距。
当您在 UITextView 内单击时,如何编写函数以确保将格式应用于所有文本范围。
glyphRangeForTextContainer 是否有等效的方法来帮助我解决这个问题?
问题与此线程有关
iOS7使用行间距输入UITextView并使用TextKit保持格式化
1- 这是问题的视频:- http://1drv.ms/1o8Rpd2
2-这是我正在测试的项目:http: //1drv.ms/1o8RtK0
谢谢你。