ios - 动态添加图像到 uitextview 的各个位置

标签 ios uitextview emoji

HI SO 开发者和成员(member),

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

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

输出:HI()早上好()它确实值得寻找

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

最佳答案

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

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

如果您不希望下载并将图像存储在设备上或内存中,则 UITextView 的替代解决方案是将适当的 html 标记添加到您的消息字符串中(即 img src)并使用 UIWebView ( docs )。例如

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)

WebView 可能无法为您提供您想要的控制级别。在这种情况下,您可以使用属性字符串 ( docs ) 在 UITextView 中显示带有图像的消息。您仍然可以以相同的方式循环遍历您的正则表达式,但您不是构建 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

关于ios - 动态添加图像到 uitextview 的各个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28803748/

相关文章:

ios - 捕捉使用 CoreGraphics 绘制的形状内的触摸 - Objective C

ios - 禁用呈现 View Controller 的交互式关闭

ios - 使用输入参数初始化 xib

java - 使用 unicode 值在 Android canvas 上绘制表情符号

javascript - 如何检测 Snowflake VARCHAR 中的表情符号?

ios - RestKit:将嵌套数组映射到对象

ios - TextView 第一次没有正确格式化文本,但第二次可以

iphone - UITextView : Text starts from 2nd line of text view

swift - 文本与 TextView swift 中的自定义按钮重叠

unicode - 如何在 Overleaf LaTex 中显示多字符 unicode 表情符号?