动态地在各个位置将图像添加到uitextview

时间:2015-03-02 06:21:43

标签: ios uitextview emoji

HI SO开发人员和成员,

我正在开发一个IOS应用程序,我正在将各个Web应用程序的数据集成到我的应用程序中,那些非常优秀的Web应用程序开发人员正在通过他们自己的自定义映像(如.png)实现聊天服务中的表情符号。所以我得到像(消息+ .png图像路径)这样的对话消息,这些路径在文本中的不同位置并且多次。所以我必须在UITextview中显示.png图像这实际上可以这样做,任何建议都非常感谢,非常感谢你的时间。

输入:HI!(图像的某些路径为字符串)早上好(图像的某些路径为字符串),它真的值得寻找

输出:HI()早上好()它真的值得寻找

注意:假设()这是一个我应该显示为表情符号的png图像。

1 个答案:

答案 0 :(得分:2)

要识别需要由图像替换的子串,可以使用正则表达式。 Ray Wenderlich在iOS(swiftobjective-c)中提供了关于正则表达式的体面教程。有关正则表达式从字符串中提取URL的SO示例(可能与您需要实现的类似),请参阅:Using NSRegularExpression to extract URLs on the iPhone

然后,您可以遍历匹配项以构建包含图像的消息。如何使用图像构建消息取决于您计划如何访问图像。

如果您不希望在设备或内存中下载和存储图像,那么UITextView的替代解决方案是将相应的html标记添加到您的消息字符串中(即{ {1}})并使用img srcdocs)。 E.g。

UIWebView

let exampleMessageString = "Text before image http://www.androidicons.com/assets/images/ai-mdpi-black/ic_action_achievement.png text in between images http://www.androidicons.com/assets/images/ai-mdpi-black/ic_action_armchair.png text after images" let htmlMessageString = convertMessageStringToHtml(exampleMessageString) // where convertMessageStringToHtml implements your regex and returns something like: // Text before image <img src=\"http://www.androidicons.com/assets/images/ai-mdpi-black/ic_action_achievement.png\" /> text in between images <img src=\"http://www.androidicons.com/assets/images/ai-mdpi-black/ic_action_armchair.png\" /> text after images let webView = UIWebView(frame: CGRectMake(x, y, width, height)) webView.loadHTMLString(htmlMessageString, baseURL: nil) 可能无法为您提供所需的控制级别。在这种情况下,您可以使用属性字符串(docs)在WebView中显示包含图片的邮件。您仍然可以以相同的方式遍历正则表达式,但不是构建一个html字符串,而是创建属性字符串。有很多关于如何在其他SO答案中使用属性字符串的示例:

iOS 7 TextKit - How to insert images inline with text?

How to add image and text in UITextView in IOS?

如果您需要帮助下载图片,请参阅:iOS download and save image inside app