创建 unicode 字符的 IBInspectable
Create IBInspectable of unicode character
我使用像 (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}")
这样打印图标。
如何解决这个问题,我缺少什么?
在此先感谢您的帮助。
您需要使用 NSScanner class 来帮助您将 NSString 转换为 unicode
在 IBInspectable 上只传递没有 \u 的代码,使用 NSScanner class 将 NSString 转换为 Unicode,您可以使用作为 unicode 字符
比如如果你想使用 \ue002 那么只需将 e002 设置为 NSSString
下面是您想要的示例,例如 UILabel 的 subclass 和带有 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
我使用像 (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}")
这样打印图标。
如何解决这个问题,我缺少什么?
在此先感谢您的帮助。
您需要使用 NSScanner class 来帮助您将 NSString 转换为 unicode
在 IBInspectable 上只传递没有 \u 的代码,使用 NSScanner class 将 NSString 转换为 Unicode,您可以使用作为 unicode 字符
比如如果你想使用 \ue002 那么只需将 e002 设置为 NSSString
下面是您想要的示例,例如 UILabel 的 subclass 和带有 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