问题标签 [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 投票
4 回答
2792 浏览

ios - 在 iOS 7 中替换 UILabel 的截断省略号

如何用另一个属性字符替换UILabeliOS 7中 a 的截断省略号(“...”)?例如,带有彩色的“>”。

我希望 Text KitNSLayoutManager能让这成为可能,但如果 UILabel 使用它,它似乎不会将其公开。

另外,我可以安全地假设在每个本地化中都使用省略号作为截断字符吗?也许不同的语言有不同的截断字符。

0 投票
7 回答
17423 浏览

objective-c - UILabel 接触点的字符索引

对于 a UILabel,我想找出从触摸事件接收到的特定点的字符索引。我想使用 Text Kit 为 iOS 7 解决这个问题。

由于 UILabel 不提供对其的访问NSLayoutManager,因此我根据UILabel' 的配置创建了自己的,如下所示:

上面的代码在一个配置为调用( GistUILabel ) 的子类中。UITapGestureRecognizertextTapped:

生成的字符索引是有意义的(从左到右点击时会增加),但不正确(最后一个字符大约在标签宽度的一半处到达)。看起来可能是字体大小或文本容器大小配置不正确,但找不到问题。

我真的很想让我的班级成为一个子类,UILabel而不是使用UITextView. 有没有人解决这个问题UILabel

更新:我在这个问题上花了一张 DTS 票,Apple 工程师建议使用我自己的布局管理器的实现来覆盖UILabel's drawTextInRect:,类似于以下代码片段:

我认为让我自己的布局管理器与标签的设置保持同步需要做很多工作,所以UITextView尽管我更喜欢UILabel.

更新2:UITextView毕竟我决定使用。所有这些的目的是检测对嵌入文本的链接的点击。我尝试使用NSLinkAttributeName,但快速点击链接时此设置未触发委托回调。取而代之的是,您必须按下链接一段时间——这很烦人。所以我创建了没有这个问题的CCHLinkTextView 。

0 投票
1 回答
231 浏览

ios - iOS 7 Text Kit 在布局中跳过文本

我对新的 iOS 7 Text Kit 有一个奇怪的问题。

我创建了一个非常简单的程序来演示。它读取单列中包含数字 1 - 300 的文件的内容。它比在 UITextView 上点击后一次显示一个“页面”的文本。(我只有一个视图,我只是不断地删除 UITextView 并将其替换为使用 NSTextContainer 创建的新视图)。

第一页显示数字 1 - 136。第二页应该从 137 开始,但事实并非如此。第二页从 155 开始,到 262 结束。文本工具包跳过了 18 行文本。然后第三页从 281 开始(跳过 19 行文本)并显示到 300 的其余数字。

有人可以查看代码并告诉我我缺少什么吗?

输入文件非常简单,如下所示(为节省空间而剪掉了):

0 投票
0 回答
488 浏览

ios - 以精确的精度计算 UILabel 的 intrinsicContentSize

我如何使用boundingRectWithSize:options:attributes:context:返回与 a完全相同的大小?intrinsicContentSizeUILabel

例如,如果我像下面这样使用它,我会得到最多 1 个像素的差异:

例如:

的文档boundingRectWithSize说:

在 iOS 7 及更高版本中,此方法返回小数大小(在返回的 CGRect 的大小组件中);要使用返回的大小来调整视图大小,您必须使用 ceil 函数将其值提高到最接近的更高整数。

53所以和之间的区别52.122002是有道理的,可以通过使用来处理ceil。但是,1像素的高度差不能。

我应该完全使用其他东西吗?

0 投票
2 回答
833 浏览

ios - iOS 7 Text Kit:NSLayoutManager 何时填充了它的最后一个 NSTextContainer?

我将 Text Kit 与 UIPageViewController 结合使用来创建一本书。原始文本存储在文本文件 (.html) 中并放入 NSTextStorage。

[NSLayoutManager addTextContainer:(NSTextContaner*)txt] 方法效果很好,但是无法知道 NSLayoutManager 何时填充了最后一个 NSTextContainer - 即使在显示所有下一个之后,它仍然会继续返回 NSTextContainer。结果,在 NSLayoutManager 完成后,您将获得所有银行页面。

我试过使用 [NSLayoutManagerDelegate didCompleteLayoutForTextContainer: atEnd:] 回调方法,但它不能正常工作。它在填充每个 NSTextContainer 后返回 atEnd flag = YES,而不仅仅是在填充最后一个 NSTextContainer 时。我已经设置了 UITextView.scrollable = NO (在其他地方建议)但这没有帮助。

当没有显示文本时,我还尝试通过调用 UITextView.text 来检查文本,但该方法总是返回位于 NSTextContainer/NSLayoutManager 后面的整个 NSTextStorage 的内容。

如果我不知道最后一个容器何时装满,我不知道所有页面何时布置好。有没有办法测试 UITextView 以查看其是否为空或 NSContainer,或 NSLayoutManager 以查看是否完成了文本布局?

0 投票
0 回答
722 浏览

ios - 在 iOS 7 上将 NSAttributedString 解析为 HTML

我有一个NSAttributedString (来自 HTML),我为UITextView.

然后我让用户编辑他们想要的内容,然后我想再次将其转换为 HTML,所以我使用ULIKit htmlFromRange:的编辑版本。这是相关的方法:

问题来自列表。具体来说,NSAttributedString从 HTML 解析的方法将列表(和标签)从我在日志中看到的内容解析为 NSTextLists。 NSTextList在 UIKit 中是私有的。有没有办法在不使用苹果默认解析器的情况下将其解析回列表(通过添加到我上面的 htmlFromRange 方法)?(见这个问题: 来自 Nic Hubbard)。

我了解如果用户在我的 textview 中创建一个列表以使用自定义属性来伪造 NSTextList,然后我可以轻松地将其解析为 html,但无法找到一种方法来使用预制的NSAttributedString.

谢谢。(我会注意到,如果您想在两个地方都回答,我会悬赏非常相关的 Nic Hubbard 问题。)

0 投票
4 回答
1417 浏览

ios - 如何进行标签/标签/文本视图?

我想做这样的事情(我什至不知道它的名字),但我不知道从哪里开始以最有效(代码量最少)的方式。

我想使用与 Apple Mail 相同的功能来执行此标签/标签/文本。Facebook Messenger 几乎相同。是否有一些官方的高级公共API?最好的起点在哪里?文本套件?界面文本输入?你能给我提供至少抽象的算法或指出一些鼓舞人心的地方吗?

在此处输入图像描述

0 投票
2 回答
1097 浏览

ios - 在 NSLayoutManager 中使用 boundingRectForGlyphRange 计算字边界时如何消除前导空格

我正在将多行字符串分解为 iOS 上的单词边界。我的解决方案以 NSLayoutManager 的 boundingRectForGlyphRange 方法为中心。它几乎可以工作,除了每个单词的矩形向右偏几个像素。换句话说 NSLayoutManager 似乎在每行添加一个前导空格/缩进,我找不到任何方法来覆盖这种行为。

我尝试使用 NSLayoutManager.usesFontLeading 以及 NSParagraphStyle.headIndent 但没有任何结果:

在此处输入图像描述

屏幕截图:灰色矩形代表标签边界,红色矩形代表每个标签的文本矩形和从上面的 [boundingRectForGlyphRange:] 方法计算的单词边界。请注意,计算的单词边界偏离了几个像素。

我也对计算单词边界的其他方法持开放态度,但 boundingRectForGlyphRange 似乎对我的目的非常方便。

0 投票
4 回答
1591 浏览

ios - NSAttributedString 插入图像后意外更改字体

我在 iOS 7 中使用 Text Kit 来创建富文本编辑器。以下是问题。

首先,字体大小为 16:

在此处输入图像描述

然后我使用代码插入图像:

然而,插入图片后,文字字体意外改变: 在此处输入图像描述

我尝试使用以下代码来解决问题(在 insertTextAttachment: 方法中添加):

问题已部分修复,新行中的新文本具有正确的字体,但图像旁边的文本仍然是错误:

在此处输入图像描述

任何人都可以帮忙吗?

0 投票
1 回答
248 浏览

ios - 在 iOS 7 中使用 TextKit 设置 UIlabel 行高的最简单方法是什么?

我假设我可以用TextKit.

  • 我不需要向后兼容。
  • 我不想破坏所 NSAttributedString涉及的任何实例上的任何现有属性。
  • UILabel如果我能得到一个setLineSpacing:不会破坏我的故事板中设置的任何段落样式的实现,我不一定介意子类化