gpt4 book ai didi

swift - 在 Swift 中动态使用 Font Awesome

转载 作者:可可西里 更新时间:2023-11-01 00:16:45 29 4
gpt4 key购买 nike

我正在尝试在 Swift 中动态编码 Font Awesome 字符。我正在使用一个返回字符代码(格式为 f236)的 API,我想将其作为 unicode 注入(inject)到 UILabel 中。理想情况下,我想执行以下操作:

var iconCode: String? = jsonItem.valueForKey("icon") as? String
var unicodeIcon = "\u{\(iconCode)}"
label.text = "\(unicodeIcon) \(titleText)"

但是你显然不能这样做。有办法解决这个问题吗?

最佳答案

@abdullah 有一个很好的解决方案,但这里有更多关于根本问题的信息,以防有人再次遇到它......

你不能写像 var unicodeIcon = "\u{\(iconCode)}" 因为 Swift 解析字符串转义码的顺序。\u{xxxx} 已经是一个转义码,而您正试图在其中嵌入另一个转义码(字符串插值)——解析器一次只能处理一个。

相反,您需要一种更直接的方法来从十六进制 Unicode 标量值构造一个 String(实际上是一个 Character,因为您只有一个)。以下是如何做到这一点(标量值为整数):

let unicodeIcon = Character(UnicodeScalar(0x1f4a9))
label.text = "\(unicodeIcon) \(titleText)"

当然,您的字符代码在一个字符串中,因此您需要从该字符串中解析出一个整数,然后才能将其传递给上面的代码。这是 UInt32 的快速扩展:

extension UInt32 {
init?(hexString: String) {
let scanner = NSScanner(string: hexString)
var hexInt = UInt32.min
let success = scanner.scanHexInt(&hexInt)
if success {
self = hexInt
} else {
return nil
}
}
}

let unicodeIcon = Character(UnicodeScalar(UInt32(hexString: "1f4a9")!))
label.text = "\(unicodeIcon) \(titleText)"

关于swift - 在 Swift 中动态使用 Font Awesome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29306722/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com