2016-06-15 56 views
4

我已經使用網站(http://fontastic.me/),它給你.ttf文件創建了一些圖標字體。創建IBInspectable的Unicode字符

您可以通過

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}")這一點。 如何解決這個問題,我錯過了什麼?

在此先感謝您的幫助。

回答

6

您需要使用NSScanner類,可以幫助你轉換的NSString UNICODE

IBInspectable只是通過唯一代碼,而無需使用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

+1

非常感謝你。 –

+0

樂於助人,快樂編碼。 –