Android / iOS键盘:贴纸API

时间:2016-03-22 23:39:23

标签: android ios keyboard emoji

我正在寻找一种创建自定义键盘的方法来添加自定义表情符号和贴纸。 到目前为止,我已经发现表情符号只是unicode字符,为了添加自定义表情符号,应该提供一个自定义字体,其中专用的表情符号映射到字体内的预定义的unicode字符。该字体应该可以在应用程序的用户之间使用,以便自定义表情符号正确显示。

问题出现在贴纸上(那些可以在Facebook评论中添加的大图片)。我无法找到有关它们如何工作的有用信息,以及将它们嵌入自定义键盘以及进一步粘贴到文本的接口。 Google Play和AppStore上有可用的应用程序(例如" Go Keyboard" app) 有人能指出我正确的方向吗?

所以问题是:

如何将贴纸嵌入文本以进一步分享给第三方应用?我的主要想法是了解贴纸是否有通用标准或API(如表情符号)?或者使用贴纸的唯一方法是使用/构建与后端服务器的自定义聊天API,这意味着只有使用相同服务的应用才能可靠地解码共享文本以正确显示贴纸?

1 个答案:

答案 0 :(得分:0)

我一直在iOS项目中工作,以证明在聊天对话中使用表情符号和贴纸的概念。

您可以在我的GitHub repository中查看并根据需要做出贡献(欢迎查看和改进)。

我做的是,使用NSTextAttachment使用UITextView对象类型在NSAttributedString内附加图片。

要在UITextView中显示图像作为表情符号:

// initialize object with the content of textView
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithAttributedString:textview.attributedText];

// initialize selected image to be used as emoji
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = [UIImage imageNamed:@"MicheyMouse"];
textAttachment.image = [UIImage imageWithCGImage:textAttachment.image.CGImage scale:25 orientation:UIImageOrientationUp];

NSAttributedString *attrStringWithImage = [NSAttributedString attributedStringWithAttachment:textAttachment];
[attributeString appendAttributedString:attrStringWithImage];

// blank space after the image
NSAttributedString *blank = [[NSAttributedString alloc] initWithString:@" "];
[attributeString appendAttributedString:blank];

textview.attributedText = attributeString;

如果您想将图片用作贴纸,请按以下步骤操作:

NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = [UIImage imageNamed:sticker];
textAttachment.image = [UIImage imageWithCGImage:textAttachment.image.CGImage scale:12 orientation:UIImageOrientationUp]; // --> change de scale, to change image size (or create the image in size that you want)

NSAttributedString *attrStringWithImage = [NSAttributedString attributedStringWithAttachment:textAttachment];

cell.textLabel.attributedText = attrStringWithImage

在这个例子中,我将图像作为贴纸直接附加在单元格中(您可以将此单元格作为聊天气球)。

换句话说,在第一个代码行中,我基本上是在UITextView中显示图像,而在第二个代码行中,我将图像直接放在聊天行中。

我必须自己做贴纸/表情符号键盘,我还做了一些工作来处理表情符号键盘和打字键盘之间的切换。

这是项目示例的GitHub存储库:https://github.com/cairano/CIStickerFacilities