问题标签 [textkit]

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.

0 投票
2 回答
3474 浏览

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 我看到的是在运行应用程序的新会话时附件大小加倍。如果我尝试检查附件的大小并调整它的大小。滞后又开始了。我很早就被这个问题困扰了。任何建议都将不胜感激。在此处输入图像描述 在此处输入图像描述

0 投票
2 回答
534 浏览

ios - iOS 7 使用 AutoLayout 自动调整 UITextView 的大小会随机断行

我想要一个简单UITextView的自动调整大小以适应其内容。

使用 AutoLayout,这非常简单:我将 添加UITextView到我的视图中,设置两个约束以将 锚定UITextView在左上角,禁用滚动,仅此而已。

IB设置

预期的行为是每次我输入一个字符时,绿色文本视图都会调整其框架的大小。但这仅部分有效:对于某些文本,文本视图决定将其呈现在两行上,而不是仅在当前行的末尾添加新字符:

UITextView 中的文本渲染示例

我猜这与新的 TextKit 框架有关,我使用NSLayoutManager's 和NSTextContainer's 属性来尝试控制这种行为,但无济于事。

另请注意,如果我“硬编码”文本视图的宽度(例如使用宽度约束),字符会正确附加在行尾,但随后我会丢失文本视图的水平自动调整大小属性。

我怎样才能表明UITextView我不希望它断线?

编辑:经过进一步测试,该错误似乎只出现在 32 位拱门上。

0 投票
1 回答
1087 浏览

ios - NSLayoutManager 可以在后台线程上安全使用吗?

即使 iOS 文档说:

NLayoutManager、NSTextStorage 和 NSTextContainer 可以从子线程访问,只要应用程序保证从单个线程访问即可。

我偶尔会遇到这个异常:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“仅在主线程上运行!”

这是回溯:

需要注意的一件事是 myNLayoutManager附加到UITextView. 您可以将其视为UITextView用于在后台线程中进行文本布局的普通方法。

那么这是否意味着与文档所说的相矛盾,NLayoutManager如果它附加到单个后台线程,则不能安全地使用它UITextView

0 投票
0 回答
238 浏览

ios7 - iOS7:CTLine 不尊重 NSBaselineOffsetAttributeName

在 iOS7 中,使用设置了正偏移或负偏移(用于下标和上标)NSLayoutManager的withNSTextStorage范围NSBaselineOffsetAttributeName- 生成的范围当前以垂直偏移呈现。

CTTypesetterCreateLine但是,在同一设备上使用较低级别的 Core Text APINSTextStorage会生成一个CTLine渲染所有范围而没有垂直偏移的。

由于 TextKit 是在 iOS7 中引入的,我担心这个属性可能只能通过更高级别起作用,NSLayoutManager而不能通过CTTypesetter.

有没有办法让垂直基线偏移在 iOS7 上使用CTTypesetter

0 投票
1 回答
146 浏览

ios - TextKit 和旁白

我一直在关注 iOS7 Day-by-Day 多页 TextKit 教程,但遇到了可访问性问题。本教程的代码在这里:iOS7 Day-by-Day

问题是每个文本视图(每列一个,每个“页面”两个)似乎包含整个字符串,并且启用 VoiceOver 时,每次一列获得焦点时,都会从开头读取文本字符串到最后,而不是读取列中实际可见的文本。

textviews/columns 是使用新的 iOS7 方法创建的

UITextView *textView = [[UITextView alloc] initWithFrame:textViewFrame textContainer:textContainer];

如何让 VoiceOver 只读取每列中的可见文本?

0 投票
1 回答
1355 浏览

ios - 将制表位之前的文本向右对齐,之后向左对齐

我正在使用 Text Kit 在我的应用程序中布局一些自定义文本,并且我想创建漂亮的列表,并使用正确对齐的枚举器。我需要文本看起来像这样:

所需的枚举样式

粉线不是想要的效果的一部分,而是强调枚举数应该如何对齐(即它们需要右对齐,但左边的文本仍然应该左对齐)。

我已经实现了这个要求的列表样式(枚举器目前是左对齐的)。为此,我将枚举数添加为字符串,其后带有一个制表符 ( \t),并在所需位置添加一个自定义制表位 ( NSTextTab) 到NSParagraphStyle. headIndent通过将 设置为与 相同的位置来缩进后续行NSTextTab

关于如何根据需要对齐枚举器的任何想法?

0 投票
1 回答
1859 浏览

ios - UILabel 粗体/突出显示所有出现的子字符串

我在自定义表格单元格中有多个 UILabel。这些标签包含不同的文本或不同的长度。

就目前而言,我有 UILabel Subclassed 允许我实现这些方法

这使我可以调用[cell.StoryLabel boldSubstring:@"test"];哪个将BOLD单词“test”的第一次出现。

我所追求的是能够创建新的子类方法或扩展我已经拥有的方法,以允许我替换标签中指定单词的所有出现。

我研究了许多方法,包括 3rd 方框架。我遇到的麻烦是这对我来说是一个学习过程。我自己尝试完成这项工作对我来说会更有益。

提前致谢!

0 投票
2 回答
1026 浏览

ios - NSTextContainer excludePaths 冻结应用程序并在 iOS 7.1 上使用 99% 的 CPU - 解决方法?

我正在尝试使用 NSTextContainer 的 excludePaths 排除 UITextView 中的正方形,如下所示:

这在 iOS 7.0 中运行良好:

使用 iOS 7.0

然而,在 iOS 7.1 中,这将导致lineFragmentRectForProposedRect:atIndex:writingDirection:remainingRect:NSTextContainer 某处出现无限循环,占用 99% 的 CPU 并疯狂地泄漏内存。该应用程序完全没有响应,最终由于内存使用而终止。显然这是 iOS 7.1 中的一个错误。

当我将排除矩形的 x 原点仅更改一个点(原点为 {1,0})时,它可以工作,但看起来很糟糕:

使用 iOS 7.1 并向右一点

该错误似乎仅在第一行的第一个字符受排除矩形影响时才会发生。当我将排除矩形更改为 {0,30} 时,它也可以工作:

iOS 7.1 和 0,30

但显然这不是我想要的。有谁知道我可以如何解决这个错误?

0 投票
1 回答
360 浏览

ios - Using TextKit with storyboards

I have a UITextView in a storyboard with a UINavigationController, which looks like this:

enter image description here

It has an autolayout constraint at the top to prevent the uppermost text from being hidden beneath the navigation bar and a constraint to the left, right and bottom.

I need to make use of a custom NSTextStorage subclass, which I understand requires me to instantiate the UITextView manually and insert it into the view. My question is, how do I mimic these constraints with code?

Here is the code I've written to initialize the UITextView:

As an aside, I could get around this if there were a way to use a custom UITextStorage subclass with a UITextView in a storyboard, am I mistaken in thinking this is impossible?

0 投票
2 回答
1823 浏览

ios - NSTextAttachment 自定义视图

NSTextAttachment是否可以在要在 iOS 上显示的位置显示自定义视图?我有自定义文本存储和布局管理器子类,但我不确定将代码放在哪里以实际添加子视图。

(我想要这个的原因是为了支持内联方程编辑。我有一个自定义文本字段类,它允许用户输入一个方程,我希望这个视图被添加到另一个文本视图的正文中。)

我看过这个教程,虽然它似乎是一个很好的起点,但它并没有涵盖实际绘制文本附件的位置。那么,具体来说,我应该重写哪些方法来添加自定义视图来代替默认的文本附件图标

请让我知道我想做的事情是否可行,或者我是否以错误的方式去做。谢谢你的帮助!