创建IBInspectable unicode character

时间:2016-06-15 11:17:42

标签: ios unicode swift2 icons ibinspectable

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

你可以通过

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

这很好用,但我想直接使用storyboard传递字符串。

然后我开始使用UILabel Subclass并为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}")这样的图标。 如何解决这个问题,我缺少什么?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分: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
        }
    }
}

See here how to set unicode to inspectable element
Here you can see output of above code