- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
iOS 部署目标:iOS 9.3,基础 SDK:最新的 iOS (iOS 11.0),Xcode 9 测试版 4, swift 4
以下代码在 Swift 3、Xcode 8 中构建和运行:
let kern = (CTRunGetAttributes(run) as? [String : Any])?
[NSKernAttributeName] as? CGFloat ?? 0
但是,Swift 4 迁移器将其转换为:
let kern = (CTRunGetAttributes(run) as? [String : Any])?
[NSAttributedStringKey.kern] as? CGFloat ?? 0
Xcode 9 现在提示:
Cannot subscript a value of type '[String : Any]' with an index of type 'NSAttributedStringKey'
根据检查员的说法,“NSAttributedStringKey
”仅在 iOS 11 中可用。(请记住,我的目标是 iOS 9)。
如果我将“NSAttributedStringKey.kern
”替换为“NSKernAttributeName
”,错误仍然存在。
命令单击“NSKernAttributeName
”告诉我它的可用性是 iOS 6。但是,检查器还声称它的类型是“NSAttributedStringKey
”,它仅可用在 iOS 11 中。我不知道这是否仅仅是 API 演示的人工产物,或者是一个东西,或者我缺少的东西。
问题:如何在 Swift 4 中使用向后兼容 iOS 9 的 NSKernAttributeName
(或其现代化版本)?
感谢您的帮助。
最佳答案
将字典键入 [NSAttributedStringKey : Any] 而不是 [String : Any]。它是 Swift 覆盖层中的所有糖分,因此它甚至可以在较旧的 macOS/OS X 版本上运行。
编辑:我应该稍微澄清一下我的最后一句话。 NSAttributedStringKey,以及 Swift 4 中所有其他新的“键”类型,只存在于 Swift 中,而不存在于 Objective-C 中。当带有 NSAttributedStringKey 键的字典桥接到 Objective-C 时,所有的键都将变成 NSString。由于您正在使用的实际基础、UIKit 等框架是用 C/Objective-C 编写的,这将“正常工作”,您不必担心文档声称 NSAttributedStringKey 仅适用于 10.11。
关于ios - Swift 4 - Xcode 9 beta 4 - NSKernAttributeName 与 NSAttributedStringKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45472799/
我正在按照在线教程构建一个杂志类型的 iOS 应用程序。我正在尝试使用 NSAttributedStringKey 但不断收到如下所示的错误。有什么想法吗? 这是导致错误的代码行: let attrs
我想计算文本的高度以获得 Collection View 单元格的估计高度。我在 collectionViewLayout 函数中使用了以下代码; func collectionView(_ coll
可以通过 largeTitleTextAttributes 自定义新的大标题功能,(与任何其他属性一样) dictionary with NSAttributedStringKey 键。其中一个键是
处理一些 objC API,我收到一个 NSDictionary *>转换为 [String : Any]在 Swift 中,我将其用于 NSAttributedString.addAttribute
我正在使用 ZSWTappableLabel 和 ZSWTaggedString 来显示标签内的链接。 import ZSWTappableLabel import ZSWTaggedString p
这个问题在这里已经有了答案: How can I both stroke and fill with NSAttributedString w/ UILabel (5 个答案) 关闭 4 年前。 我
我最近转换了我的应用程序,但不断收到错误消息 "Cannot convert value of type '[String : Any]' to expected argument type '[NS
我在使用 NSAttributedStringKey.attachment 与 NSAttachmentAttributeName 时遇到了问题。相关代码如下: var key: Any?
我在使用库中的 Swift 代码时遇到了一些问题,我已经使用了一段时间。这似乎与某种版本冲突有关,但我不确定。 代码如下: let attribMsg = NSAttributedString(str
更新到 Swift 4 后,我收到此代码的错误 attributes["NSFont"] = font attributes["NSColor"] = UIColor(red: 0.0
下面是针对上述问题的代码行。此问题发生在 Swift 4.1 中。 let textAttributes = [NSAttributedStringKey.foregroundColor:UIColo
我正在尝试在我的应用程序中创建一个超链接,并且正在实现此解决方案: let attributedString = NSMutableAttributedString(string: "Just cli
刚刚更新了 xcode 9 的 pod,我收到以下关于 Cosmos 的错误. Type 'NSAttributedStringKey' (aka 'NSString') has no member
这个问题在这里已经有了答案: Swift 4 Cannot convert value of type '[String : AnyObject]?' to expected argument ty
我将我的代码从 Swift 3 转换为 Swift 4 但出现此错误: Type 'NSAttributedStringKey' has no member 'foregroundColorNSAtt
我对 NSAttributedStringKey 和 UITextView 有疑问 事实上,我正在尝试这样做: 这是理论上应该有效的代码 class ViewController: UIViewCon
将我的代码从 swift 3 转换为 4 并得到错误无法将类型“[String:Any]”的值转换为预期的参数类型“[NSAttributedStringKey:Any]” 在线 attributed
这个问题在这里已经有了答案: Cannot convert value of type '[String : AnyObject]?' to expected argument type '[NSA
这个问题在这里已经有了答案: Swift 4 attributedString get typing attributes (3 个答案) 关闭 5 年前。 我曾经能够生成 NSAttributed
iOS 部署目标:iOS 9.3,基础 SDK:最新的 iOS (iOS 11.0),Xcode 9 测试版 4, swift 4 以下代码在 Swift 3、Xcode 8 中构建和运行:
我是一名优秀的程序员,十分优秀!