重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Swift:
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的榕江网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
Swift:
也需要扩展NSString
Swift中用到的扩展:
其中♀前后都有不可见字符,用来表示♀是需要和????合并的。表示形式为: \u200d ♀ \ufe0f
而我们在编码Emoji时,将Emoji用括起来进行发送。
其中Swift语言编码的String,会将 这个符号和表情带的 \u200d 与 \ufe0f 结合
转换成Unicode↓
所以在实际使用时,使用NSString来代替String。
最近本人项目中用到了 Emoji 表情键盘,可是发现使用 Unicode 编码的 Emoji 只能显示固定的大小。
尝试改变 UIButton 的frame来达到改变大小,失败。
尝试改变 UIButton 的 titleLabel.font 为 [UIFontsystemFontOfSize:40] ,失败。
最后发现同样只要一句话就搞定了????
在IOS中,打开有输入动作的控件的属性检查器,在Keyboard的下拉选项有10种类型键盘,可以根据需要进行选择
苹果API文档是这样解释NSString的length方法:返回UTF-16编码单元(码元)的个数。
因此我们猜测NSString底层是使用UTF-16编码存储字符数据的,那何为UTF-16?
通过UTF-16的定义,我们知道英文字母和一般汉字在UTF-16中用两个字节表示,即占一个码元,而一般的Emoji表情用四个字节表示,即占两个码元。所以英文字母和汉字在NSString中的length为1,而一般的Emoji表情在NSString中length为2。
输出
查看表情编码地址:
通过分析,这个复杂表情其实是由四个小表情(两男两女)和三个连接符号组合出来的:
所以,在NSString中length为 4*2 + 3*1 = 11 (UTF-16码元个数)
但是当把NSString转换成UTF-8格式的NSData时,数据是这样存储的:
所以转成NSData后的存储总长度为 4*4 + 3*3 = 25 (字节个数)。
补充:这种组合出来的复杂表情是苹果自己定义的,不属于Unicode编码范围,但每个小表情属于Unicode编码范围,所以将此表情发给安卓端,会被显示成多个连续的小表情。而连接符本身显示出来不占宽度,所以跟没有连接符效果一样。
输出
1、在使用短信息或者发送微信qq类聊天软件时,可以使用emoji表情。 2、点开短信息。点击小地球图标不松,出现菜单。如图 3、选择表情符号,按住某一表情不松,会出现不同肤色的图标。如图 4、在各种聊天软件中均可发送。