ios中的自定义表情

时间:2013-03-06 05:36:59

标签: ios6 chat xcode4.5

我正在创建一个聊天应用程序,我必须添加自己的表情符号(自定义)作为现有的表情符号/表情符号图标。这可能吗? 任何机构有一个想法然后请帮助我。

提前感谢

1 个答案:

答案 0 :(得分:5)

我目前正在研究相同的问题。您可以查看一些方法,但考虑到您正在开发一个聊天应用程序这一事实,我相信您将使用UITableView并且滚动性能将是您的一个大问题。如果您使用的方法太复杂,滚动会非常紧张,特别是在较旧的设备上(我不确定您是否针对iPhone4)。

我已确定以下选项:

1)您可以将每条消息作为UIWebView加载,并使用HTML在任何需要自定义表情符号的位置插入图像。这似乎是最简单的方法,但它也是一种缓慢的方法。我没有过多地研究这个问题并将其作为最后一个选择。

2)您可以使用UILabel子类。您可以使用这些代码,大多数代码会扫描“http://”或“www”等文本前缀。并在那里插入一个带有目标动作的UIButton。你可以把UIImageView放在那个地方。以下是一些指导您朝这个方向发展的好项目。

看看Nimbus归因于Label(略显复杂)。 和TTTAttributedLabel。最好的(最简单的)是FancyLabel。这是一个非常简洁的智能标签实现。

3)您可以查看NSAttributedStrings。对不起,我对他们没有多少经验。 可以找到类似的Somethig here,一个名为DTCoreText的项目。如果您继续尝试了解他们想要做什么,那将对您有所帮助。寻找有关DTCoreText的教程。我相信这对你更有帮助。记得从github克隆DTCoreText git。如果您只是下载拉链,它就不起作用。

4)我头脑中最复杂的方法,也可能是效率最高的方法,是通过确定哪些线条有表情符号来手动计算标签的大小(因为它们会比普通字符大一点)然后替换它们在NSString中有(足够的)空格。我会将NSString绘制为UILabel或使用以下方法:[textX drawInRect:theRect withFont:font lineBreakMode:UILineBreakModeClip alignment:UITextAlignmentCenter];。然后我会手动将每个表情符号作为CALayer插入到正确的位置。

对于各种绘图方法的性能相关查询,我建议你看一下floriankugler博客关于layer-trees-vs-flat-drawing-graphics-performance-across-ios-device-generation,这篇文章确实比较了几种绘图方法。它建议使用CALayers而不是drawRect或简单的UIView层次结构方法。

5)如果你仍然在滚动时感到紧张,你可能会很勇敢并尝试在OpenGL中渲染文本。我也在进一步阅读,这似乎是一项非常非常困难的任务。我的应用程序仍然紧张,我可以使用任何我可以得到的帮助。

6)我的一位同事还建议通过在TTF中嵌入PNG来制作自定义字体,就像苹果公司为创建苹果表情符号字体所做的那样。我再一次没什么帮助。如果有的话,这似乎是一个非常困难的方法。

我为无法提供尽可能多的链接而道歉,但此时我根本没有足够的声誉。 :P