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

ios - NSTextStorage 的备用后备存储

每个示例都将 NSMutableAttributedString 显示为“后备存储”,用于保存与查看/编辑文本相关的文本和属性。我如何使用替代品,例如 std::string 或者数据库中的内容。作为一个测试,我创建了一个子类并对其进行硬编码,以便在我覆盖所需的方法时返回默认值。但是,当我在 iPhone 5 设备上运行它时,它只会显示黑屏,直到我按下 Home 按钮。系统不断调用attributesAtIndex:location:effectiveRange:range:,CPU使用率上升到100%,App从不做任何事情。它确实调用了一次 string: 方法,但随后只是继续调用 attributesAtIndex:location:effectiveRange:range

这个例子:

以下是它的设置方式:

我理解 NSTextStorage 是一个类集群,这似乎意味着它是一个抽象类工厂。我真的不明白为什么我不能使用另一个“后备商店”。我的计划是使用 std::string (因为我的数据来自哪里),然后返回一个常量属性样式(如上面的代码)。我一直在阅读有关 NSTextStorage、NSLayoutManager、NSTextContainer 和 NSTextView 的所有内容,包括 mac OS X 文档(即使我在 iOS 上这样做)。谢谢!

0 投票
1 回答
1955 浏览

ios - 下划线文本 - 不同字体大小的交叉范围内的线条粗细

我正在使用 textStorage 的属性UITextView。我有字符串和我的类的对象数组TextFormattingElement。此类的一个实例由NSRange(必须在文本中应用此元素)和一些格式参数组成:

现在我遍历这个数组并将这些元素依次应用到 textView 的 textStorage 中。我使用这种方法:

我有一个问题:如果我有两个TextFormattingElement具有交叉范围的实例(例如NSMakeRange(9,28)NSMakeRange(26,7)),则下划线的粗细总是取决于最后一个元素的字体大小。您可以在此屏幕截图中看到此说明:

在此处输入图像描述

我的 2 个格式化元素的参数是:

第一个:位置 = 9,长度 = 28,fontName = TimesNewRomanPSMT,fontSize = 15,fontColor = UIDeviceRGBColorSpace 1 0 0 1,isBold = 0,isItalic = 0,isUnderlined = 1,isStriked = 0

第二:位置 = 26,长度 = 7,fontName = TimesNewRomanPSMT,fontSize = 25,fontColor = UIDeviceRGBColorSpace 0 0 1 1,isBold = 1,isItalic = 0,isUnderlined = 1,isStriked = 0

但我想获得类似 Google Docs 的效果:

在此处输入图像描述

如何使用 TextKit 做到这一点?

0 投票
1 回答
2127 浏览

download - 替换 NSMutableattributedString 上的 NSTextattachement 图像

我正在构建一个带有文本和图像的 UITextView(子类化 NSTextstorage 以显示我的内容)

我有带有图像 URL 的文本内容。所以我的问题是,如果没有缓存,我需要下载所有图像。

所以我想先插入一个占位符图像,下载图像,然后用下载的图像替换占位符图像。

这就是我的工作方式。

首先,我通过用这个标签替换所有 url 来用图像 url 格式化我的文本:

然后我使用正则表达式来获取所有这些标签。

我正在测试是否有缓存的图像。如果没有,我提取所有 url,下载它们并缓存它们。

我创建了一个 NSObject 类 ImageCachingManager 并声明了一个在下载图像时调用的委托方法:

像这样,我很难使用委托方法获得的图像的 url 在我的 NSTextstorage 属性字符串中搜索匹配的 url,并用下载的图像替换当前的 NSTextattachement 图像。

但是我不知道该怎么做...

感谢帮助 !

0 投票
1 回答
170 浏览

ios - NSAttributedString:如何显示具有不同属性和缩进的行

如何拆分字符串“5 + Bonus Ball”,例如:

在此处输入图像描述

我将把这个属性字符串分配给标签。

0 投票
2 回答
1491 浏览

ios - iOS7 UITextView 具有来自文件的多个段落样式

我正在为我的应用程序编写应用程序内指南,我想在其中布局一些支持动态类型的标题和文本段落。

使用单个 UITextView 最简单的方法是什么?(文本最好从单独的文本文件中加载)。

有很多方法可以解决这个问题:

  • UIWebViews(过度杀戮??)
  • UITextView 和 NSAttributedString?
  • Text Kit - 对于这个简单的任务来说似乎很麻烦?

所需布局/功能示例

0 投票
1 回答
2413 浏览

ios - 如何将 UITextView 的文本设置为粗体且不可点击

我在 a 中有以下 HTML,UITextView并希望将其呈现为UITextView

是我的身体作为笔记

让我补充一下:它当前显示为蓝色并带有下划线且不可点击。我想让它加粗并且不可点击。我已经阅读了有关的文档,linkTextAttributes但是没有使用它,它有点超出我的能力,我真的没有看到任何简单的方法来操纵它。我如何将上面的链接渲染为粗体和黑色(不是蓝色)并保持不可点击的性质?

0 投票
2 回答
1391 浏览

ios - 嵌入在 UITextView 中的三列表

我的项目包括在 UITextView 中显示文档。大部分文档都是非常直接的属性文本,我可以正常工作。文档的其他部分由普通文本组成,然后是一个 3 列的表格,其中 2 或 3 行基本上就在普通文本的中间。

在花了相当多的时间搜索网络之后,我似乎找不到任何关于任何人做这样的事情的参考。

根据我读过的一些教程,我在想也许有一种方法可以创建一个由一堆 UILabel 组成的子视图,这些 UILabel 将是 UIView 的子视图(我们称之为_tabularView),我可以在 UITextView 顶部布局. 然后我可以以某种方式将框架定位_tabularView到它应该在的 UITextView 中的字符范围。然后我可以使用排除路径来防止文本进入视图。我唯一的问题是我不确定如何去做,而且我也担心它不会随着其他内容滚动。

我的问题是,是否有人对如何完成此任务有任何建议,或者对将表格嵌入 UITextView 的更好方法提出建议。

0 投票
1 回答
84 浏览

objective-c - 如何使用 TextKit 设置字符之间的固定距离

TextKit用来画很长的文字。段落对齐是NSTextAlignmentJustified,hyphenationFactor是 on。

通常它工作得很好,但有时我会看到这样的行:"L o n g t e x t". 有没有办法画出这样的线条"Long____text"?即用灵活的空格设置字符之间的恒定距离?

提前致谢。

0 投票
4 回答
5275 浏览

ios - 如何在 UILabel 中将文本放入圆圈中

我想将文本UILabel流入一个圆圈(而不是矩形)。我做了一些实验NSLayoutManagerNSTextContainerNSTextStorage它似乎不起作用。下面的示例应该将文本流入一个较小的 40x40 矩形(标签为 120x120),但似乎没有任何效果。

伊德斯?

0 投票
1 回答
265 浏览

objective-c - 放大镜和编辑菜单不会出现在使用 TextKit 的分页滚动视图中

我创建了一个分页 UIScrollView 并使用 TextKit 用文本填充其内容。所有的分页工作完美。让我难过的是,当所有文本都适合一页时,一切都按预期工作。但是,如果文本较长并且需要滚动视图来创建多个页面,则文本不再是可突出显示/可选择的。

这是一个简单的示例(只需将其放入viewDidLoad要复制的新项目中)。将文本视图的字体大小更改为较小的(12pt),以便所有文本都适合一页将导致预期的行为。相反,更大的尺寸(22pt)将为滚动视图创建多个页面,我们失去了文本的难处理性。

所以我想我的问题是,即使文本需要多页,我如何才能恢复放大镜和编辑菜单功能?

非常感谢您的帮助!