当前位置: 首页 > 面试题库 >

颜色属性在带有NSLinkAttributeName的NSAttributedString中被忽略

韦欣德
2023-03-14
问题内容

在中NSAttributedString,字母范围具有链接属性和自定义颜色属性。

这是测试代码。

Swift 2,Xcode 7:

import Cocoa
import XCPlayground

let text = "Hey @user!"

let attr = NSMutableAttributedString(string: text)
let range = NSRange(location: 4, length: 5)
attr.addAttribute(NSForegroundColorAttributeName, value: NSColor.orangeColor(), range: range)
attr.addAttribute(NSLinkAttributeName, value: "http://somesite.com/", range: range)

let tf = NSTextField(frame: NSRect(x: 0, y: 0, width: 200, height: 50))
tf.allowsEditingTextAttributes = true
tf.selectable = true
tf.stringValue = text
tf.attributedStringValue = attr

XCPlaygroundPage.currentPage.liveView = tf

Swift 3,Xcode 8:

import Cocoa
import PlaygroundSupport

let text = "Hey @user!"

let attr = NSMutableAttributedString(string: text)
let range = NSRange(location: 4, length: 5)
attr.addAttribute(NSForegroundColorAttributeName, value: NSColor.orange, range: range)
attr.addAttribute(NSLinkAttributeName, value: "http://somesite.com/", range: range)

let tf = NSTextField(frame: NSRect(x: 0, y: 0, width: 200, height: 50))
tf.allowsEditingTextAttributes = true
tf.isSelectable = true
tf.stringValue = text
tf.attributedStringValue = attr

PlaygroundPage.current.liveView = tf

我已经向Apple发送了一个错误报告,但是与此同时,如果有人对Xcode 8中的修复程序或变通办法有所了解,那将是很好的。


问题答案:

苹果开发人员回答:

请注意,我们的工程团队已根据所提供的信息确定此问题的 行为符合预期

他们解释了为什么它以前有用,但现在不再有用:

不幸的是, 以前的行为 (使用自定义颜色呈现NSLinkAttributeName的归因字符串范围) 不受显式支持
。它之所以起作用,是因为NSTextField仅在存在字段编辑器时才渲染链接。如果没有字段编辑器,我们将退回到NSForegroundColorAttributeName指定的颜色。

版本10.12更新了NSLayoutManager和NSTextField以使用默认链接外观呈现链接,类似于iOS。(请参阅有关10.12的AppKit发行说明。)

为了提高一致性,预期的行为是使用默认链接外观绘制表示链接(通过NSLinkAttributeName指定)的范围。因此,当前行为是预期行为。

(强调我的)



 类似资料:
  • 问题内容: 我有以下CSS: 现在,我尝试提取该颜色以使页面颜色“可滑动”。有什么办法吗?只需删除颜色,然后再次使用相同的键,稍后将覆盖原始规则。 似乎没有,至少Google没做。 问题答案: 没有: 您可以通过检查计算样式列表来在Chrome和Firefox中进行验证。具有简写方法的其他属性(如)在规范中定义了其变体。 与大多数缺少的“长期” CSS属性一样,CSS变量可以解决此问题:

  • 我有一个基于Micronaut的网络应用程序,我在认证方面遇到了一些问题。这个问题特别与浏览器正在经历的变化有关,其中SameSite默认为Lax,如果您使用SameSite:none,那么cookie必须是安全的。我正在使用所有最新的稳定版本,例如Micronaut2.0.1。 Chrome给了我以下例外: set-cookie:JWT=EYJHBGCIOIJUB2..U5ODYXNZA2MX0

  • 我一直在搜索,但在HTML或RGB中找不到颜色值。这是属性objetct: WP_术语对象([Term_id]= 这个领域能在哪里? 和 Tt显示所有颜色: 如何将一个属性与其颜色关联?

  • 当我使用像black87(第一张图片)或black54这样的颜色时,我会在导航条上得到一条奇怪的线条,而其他颜色不会出现这种情况。还有,当我把它设置为透明的时候,它只是看起来和真正的黑色版本一样(图4)。 示例: 更改颜色的部分代码:

  • 我在我的javafx应用程序中使用锚板。我想画一个矩形并用渐变色填充它,如下所示:矩形的左侧是蓝色的,右侧是红色的,我希望它看起来从左到右,蓝色减少,红色增加。 我知道如何放置一个矩形(如何在javafx中使用Rectangle类),但我不知道如何以这种方式填充它。有什么想法吗?

  • 问题内容: 我使用Spring-Data Neo4j 2.2.0-RELEASE。(我的以下问题将适用于任何其他类型的实体映射,为什么不适用于JPA) 在我的项目中,我有一个用Spring注释注释的公共方法,因为我想在其中更新/保存一个实体: 我的application-context.xml是以下内容: 正如我们在此配置中看到的,aspectJ用于事务。 因此,我尝试通过更改applicatio