我正在创建一个聊天应用程序,我必须在其中添加自己的笑脸(自定义)作为现有的笑脸/表情符号图标。这可能吗?任何人都有想法然后请帮助我。
预先感谢
我目前正在研究相同的内容。您可以研究几种方法,但考虑到您正在开发聊天应用程序这一事实,我相信您将使用 UITableView 并且滚动性能对您来说是一个巨大的问题。如果您使用的方法太复杂,滚动会非常紧张,特别是在旧设备上(我不确定您是否针对 iPhone4)。
我已经确定了以下选项:
1) 您可以将每条消息作为 UIWebView 加载,并使用 HTML 在您需要自定义表情符号的任何地方插入图像。这似乎是最简单的方法,但也是一种缓慢的方法。我并没有对此进行过多的研究,并将其作为最后的选择。
2)您可以使用 UILabel 子类。您可以随意使用这些代码,它们中的大多数会扫描诸如“http://”或“www”之类的文本前缀。并在那里插入一个带有目标操作的 UIButton。你可以在那个地方放一个 UIImageView 。这里有几个很好的项目可以指导您朝这个方向发展。
查看 Nimbus 属性标签(稍微复杂)。和 TTTAttributedLabel。最好的(最简单的)是FancyLabel。这是一个非常简洁和简单的智能标签实现。
3)你可以看看 NSAttributedStrings。对不起,我对他们没有太多经验。可以在这里找到类似的东西,一个名为 DTCoreText 的项目。如果您继续尝试了解他们正在尝试做什么,那将真的对您有所帮助。也可以寻找关于 DTCoreText 的教程。我相信这对你的帮助比什么都大。记得从 github 克隆 DTCoreText git。如果你只下载 zip,它不起作用。
(足够)NSString中的空格。我会将 NSString 绘制为 UILabel 或使用以下方法:[textX drawInRect:theRect withFont:font lineBreakMode:UILineBreakModeClip alignment:UITextAlignmentCenter];
。然后我会手动将每个表情符号作为 CALayer 插入到正确的位置。
对于各种绘图方法的性能相关查询,我建议您查看 floriankugler 关于 layer-trees-vs-flat-drawing-graphics-performance-across-ios-device-generations 的博客,这篇文章确实比较了几种绘图方法。它建议使用 CALayers 而不是 drawRect 或简单的 UIView 层次结构方法。
5) 如果您在滚动时仍然感到不安,您可能会勇敢地尝试在 OpenGL 中渲染文本。我也在进一步阅读,这似乎是一项非常非常困难的任务。我的应用程序仍然抖动,我可以使用我能获得的任何帮助。
6)我的一位同事还建议通过在 TTF 中嵌入 PNG 来制作自定义字体,就像苹果创建苹果表情符号字体所做的那样。我在那儿也帮不上什么忙。如果有的话,这似乎是一个非常困难的方法。
我很抱歉无法提供我想要的尽可能多的链接,但我现在根本没有足够的声誉。:P