问题标签 [nsattributedstring]

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 回答
1918 浏览

cocoa - 为什么 -[NSTextStorage replaceCharactersInRange: withAttributedString:] 有时,有时不尊重其他字符集中的字体?

我正在尝试诊断 UKSyntaxColoredTextDocument 0.4 http://www.zathras.de/angelweb/blog-uksctd-oh-four.htm中的问题,其中实际使用与您指定的字体不同的字体的文本会随着您消失类型。(您可以下载并试用这个很酷的实用程序来亲自查看这个问题......)

这是背景:这是一些在您键入时重新着色的语法着色代码。它工作得很好,但是如果您输入一些不属于该文本视图的字体集的字符(例如 Monaco、Helvetica)......例如,一个符号字符或日语中的某些东西,它实际上使用 ZapfDingbatsITC 之类的字体或HiraKakuProN-W3 显示它,然后在您键入时不会显示这些字符。

假设您有这样的文本:fdsafd[☀]sfds‡[☀☀☀][日本语]...

如果您将其粘贴到文本字段中,并从弹出窗口中切换语法着色,则会调用oldRecolorRange:,并使用以下行:

在这里,事情的表现和我预期的一样。ASCII 文本、符号和日文文本都是可见的。[textView textStorage] 的值开始和结束,是这样的:( 这是 gdb 的输出;它没有显示 unicode 字符,不用担心。)

...即使将新值设置为

换句话说,显示此字符串所需的“外来”字体以某种方式自动保留,即使在替换字符串中未指定字体。

但是,当您一次输入一个字符时,replaceCharactersInRange:withAttributedString:方法中的不同调用会recolorRange:导致属性字符串使用基本字体——没有为我们添加外来字符字体,因此主要字体的范围根本不可见!

知道为什么这种方法在一种情况下会以一种方式工作而不是在另一种情况下吗?是否有某种开关可以传递给NSTextStorage/NSAttributedString提示我们希望文本显示外来字符?

0 投票
6 回答
6546 浏览

iphone - 为什么 iPhone 上没有 NSAttributedString?

有谁知道是什么让 Apple 在将 AppKit 变成 UIKit 时遗漏了 NSAttributedString?

我问的原因是我真的很想在我的 iPhone 应用程序中使用它,而且除了自己做之外似乎没有替代或替代方法......

字符串上可能有混合字体属性——要实现类似的东西,用几行代码用 NSAttributedString 就可以实现。

此外,自己编写所有这些额外的绘图代码会使我的表格视图单元格非常沉重,并且确实会损害性能。

有人有什么想法吗?有任何天才正在研究 NSAttributedString 的开源替代品吗?

0 投票
5 回答
3844 浏览

objective-c - 如何为 NSAttributedString 中的文本设置“隐藏”属性?

我有一个带有NSTextView控件的 Cocoa 应用程序,该控件将其文本保存在一个NSAttributedString(实际上我相信它是一个NSMutableAttributedString)中。我可以轻松地在该字符串内的不同字符范围内设置和修改不同的文本属性(如字体、下划线等)。

但是,我想将部分文本设置为隐藏(类似于 CSS 属性的效果display: none)。当发生外部事件(例如单击按钮)时,我想取消隐藏或隐藏该特定范围的字符。

无论如何要这样做NSAttributedString吗?

0 投票
36 回答
263182 浏览

ios - 在 UILabel 的 NSAttributedString 中创建可点击的“链接”?

我已经搜索了几个小时,但我失败了。我可能什至不知道我应该寻找什么。

许多应用程序都有文本,并且在此文本中是圆角矩形中的 Web 超链接。当我单击它们时,它们UIWebView会打开。令我困惑的是,它们通常具有自定义链接,例如,如果单词以 # 开头,它也是可点击的,并且应用程序通过打开另一个视图来响应。我怎样才能做到这一点?有可能UILabel还是我需要UITextView或其他什么?

0 投票
0 回答
393 浏览

cocoa - 将图像插入 NSViews pageFooter

我一直在尝试将图像插入到自定义 NSView 的页脚中,这样当我打印它时,它会在页脚中显示文本和图像。这是我正在使用的代码:

这不会显示图像,但会显示文本。我做错了什么?

我在 Xcode 的 Resources 文件夹中有 Logo.tif,它位于我桌面上的主项目文件夹中。我也尝试过 Logo.tiff (带有额外的'f')

谢谢,

迈克尔

0 投票
2 回答
1627 浏览

cocoa - 为什么超链接有时不会显示在带有 NSAttributedString 的 NSTextField 中?

我在 NSTextField 中使用的文本是从文件中加载的,如下所示。

根据两个屏幕截图,除非我首先单击 NSTextField 上的某个位置,否则窗口中的超链接不会以蓝色下划线呈现。

如何使这些超链接始终看起来像超链接?

这是 RTF:

替代文字
(来源:pokercopilot.com

替代文字
(来源:pokercopilot.com

0 投票
2 回答
2702 浏览

cocoa - 如何使用 NSAttributedString 创建下标

我看到 NSAttributedString 有一个特定的上标属性,但我找不到一个下标。使用 NSAttributedString 创建下标字符的一般做法是什么?

示例:H2O

0 投票
12 回答
30763 浏览

cocoa - 如何以固定宽度获取 NSAttributedString 的高度

我想在固定宽度的框中绘制一些 NSAttributedStrings,但是在计算绘制时它们将占用的正确高度时遇到了麻烦。到目前为止,我已经尝试过:

  1. 调用- (NSSize) size,但结果是无用的(为此目的),因为它们会给出字符串所需的任何宽度。

  2. - (void)drawWithRect:(NSRect)rect options:(NSStringDrawingOptions)options使用形状为我想要的宽度和选项的矩形进行调用NSStringDrawingUsesLineFragmentOrigin,就像我在绘图中使用的那样。结果……难以理解;当然不是我要找的。(正如在许多地方指出的那样,包括这个Cocoa-Dev 线程)。

  3. 创建一个临时的 NSTextView 并做: 当我查询 tmpView 的框架时,宽度仍然是所需的,并且高度通常是正确的......直到我得到更长的字符串,当它通常是所需大小的一半时。(似乎没有达到最大尺寸:一帧将是 273.0 高(大约 300 太短),另一帧将是 478.0(只有 60-ish 太短))。
    [[tmpView textStorage] setAttributedString:aString];
    [tmpView setHorizontallyResizable:NO];
    [tmpView sizeToFit];

如果有其他人管理过这一点,我将不胜感激。

0 投票
1 回答
635 浏览

cocoa - 文本视图的多个撤消管理器

我有一个文本视图,它从存储在模型对象中的属性字符串中获取其内容。我在抽屉中列出了其中几个模型对象,当用户单击其中一个时,文本视图会交换其内容。

我现在还需要将撤消管理器换成文本视图。我在我的模型对象上初始化了一个撤消管理器,并使用 undoManagerForTextView 将其返回到文本视图,但有些地方不太对劲。

策略性放置的日志语句向我展示了一切都按计划进行:在启动时,一个新的模型对象被正确初始化,并且文本视图总是拉出一个非空的撤消管理器。但是当谈到实际撤消时,我就是无法获得我想要的行为。

我打开一个窗口,输入一些内容并按 cmd+z,然后撤消操作。我打开一个窗口,输入一些东西,在桌子上选择一个新模型,输入一些东西,回到第一个模型并尝试撤消,我得到的只是一声哔哔声。

文档中的某些内容让我大吃一惊,因为这意味着我无法对多个模型对象进行撤消:

只要字段或单元格是第一响应者(即键盘操作的焦点),默认的撤消和重做行为就适用于文本字段和单元格中的文本。一旦插入点离开字段或单元格,之前的操作将无法撤消。

0 投票
3 回答
3384 浏览

cocoa - 将 NSAttributedString 复制到粘贴板

对 Cocoa 来说是全新的,我正在尝试弄清楚如何将 NSAttributedString 复制到粘贴板。我查看了文档,不确定是否应该使用 NSPasteboardItem 。

这是我必须复制常规 NSString 的内容:

如何设置 NSAttributedString?

谢谢