通过RubyMotion在UILabel中使用unicode字符

时间:2013-05-28 18:25:49

标签: ios unicode rubymotion

我正在尝试使用Unicode私有空格字符并将其设置为text的{​​{1}}属性。这是使用RubyMotion。

我想要的角色是Entypo家庭的一部分,并且是UILabelU+1F554)。

我创建了一个新的🕔

UILabel

使用@lblIcon = UILabel.alloc.initWithFrame([[0,(self.view.frame.size.height/2) - 128],[self.view.frame.size.width,96]]) 语法将其文本设置为Unicode字符。

pack

然后我应用图标字体并将其添加到视图中:

@lblIcon.text = [0x1f554].pack('U*')

当我运行ico_font = UIFont.fontWithName("Entypo", size:48) @lblIcon.font = ico_font self.view.addSubview @lblIcon 并尝试启动应用时,我收到以下崩溃消息:

rake

我也试过

*** Terminating app due to uncaught exception 'RuntimeError', reason: 'ui_label.rb:16:in `font=:': NSInvalidArgumentException: NSConcreteMutableAttributedString addAttribute:value:range:: nil value (RuntimeError)

@lblIcon.text = [0x1f554].pack('U*') + ""

无济于事。

创建由适合在@lblIcon.text = "\U1F554" 中使用的unicode字符组成的字符串的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

GantMan是对的。

将标签的文本设置为'0x1f554'.hex.chr(Encoding::UTF_8)应该有效。

答案 1 :(得分:0)

这是使用FontAwesome

执行此操作的完整宝石解决方案

https://github.com/derailed/motion-awesome?source=c

看起来他使用index.hex.chr(Encoding::UTF_8)