4

我使用 ( http://fontastic.me/ ) 之类的网站创建了一些图标字体,这些网站为您提供 .ttf 文件。

你可以使用它

myLable.text = "\u{e002}" //
print("\u{e002}")     //
print("\u{1F496}")   //

这很好用,但我想直接使用情节提要传递字符串。

然后我开始使用 UILabel 子类并为 unicode 字符串创建 @IBInsectable。但这不起作用。以下是 IBInspectable 的代码。

@IBInspectable internal var myString: String? {
        didSet {
            text = "\u{e002}"       //          this works
            text = "\\u{\(myString)}" //\u{e002}    this not
        }

或者

let myString = "e002"
print("\\u{\(myString)}")   //\u{e002}

即使这也不起作用

print(myString)
text = String(UTF8String: myString!)

但这只会打印文本,它应该像print("\u{e002}")这样打印 Icon 。如何解决这个问题,我错过了什么?

提前感谢您的帮助。

4

1 回答 1

6

您需要使用 NSScanner 类来帮助您将 NSString 转换为 unicode

IBInspectable上,只传递没有\u的代码,使用 NSScanner 类将 NSString 转换为 Unicode,您可以将其用作 unicode 字符

就像如果你想使用\ue002那么只需将e002设置为 NSSString

下面是您想要的示例,例如 UILabel 的子类并具有 IBInspectable 元素的属性。

class LabelSubClass: UILabel {

    @IBInspectable internal var myString: String? {
        didSet {
            let scanner: NSScanner = NSScanner(string: myString!)
            var code: UInt32 = 0
            scanner.scanHexInt(&code)
            let unicodeString: String = String(format:"%C", UInt16(code))
            print("unicodeString: \(unicodeString)")

            text = unicodeString
        }
    }
}

请参阅此处如何将 unicode 设置为可检查元素
在这里您可以看到上述代码的输出

于 2016-07-14T10:41:58.603 回答