【问题标题】:Adding images to uitextview at various locations dynamically动态地将图像添加到不同位置的uitextview
【发布时间】:2015-05-02 10:45:23
【问题描述】:

HI SO 开发人员和成员,

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

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

输出:HI()good morning() 真的很值得寻找

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

【问题讨论】:

    标签: ios uitextview emoji


    【解决方案1】:

    要识别需要被图像替换的子字符串,您可以使用正则表达式。 Ray Wenderlich 提供了一个关于 iOS 中正则表达式的不错的教程(swiftobjective-c)。有关从字符串中提取 URL 的正则表达式的 SO 示例,可能类似于您需要实现的内容,请参阅: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

    【讨论】:

    • 感谢您的时间 peteR 并提供了链接。我已经看到并且似乎值得。但在我的情况下,我不确定有多少这样的 png 图像以及它们在消息中的位置是难以想象。它完全取决于用户。像 HI 你好吗 等等。该图像路径可以在消息中的任何位置和任何时间。此外,还有多个图像路径可以提供一种方式到多个图像,我需要像在短信中显示表情符号一样公平地显示。我希望你理解这里的问题,我等待你的回复。很高兴见到你彼得
    • 抱歉,我只是从这里推测,因为我不完全理解您遇到的问题。您能否编辑您的问题以提供更多详细信息,例如:真实示例消息、模拟所需的输出、您如何检索图像以及到目前为止您尝试过的一些代码。
    • 嗨,彼得!我试图附上图片,但它不允许我,因为我没有足够的声誉。我会找到一些替代品,让你尽快了解情况。感谢您的及时回复
    • 别担心模型,我明白你在做什么,谢谢。图像路径的格式是什么?它是一个网址,你必须下载图片吗?它是您已经下载或有权访问的图像的本地文件路径吗?消息字符串中是否有任何内容将某些子字符串标识为图像路径?
    • 该路径是我必须下载 Peter 的图像的 url。如果有意义的话,我也可以将这些图像本地存储在我的项目中,如果它们可以帮助我而不是每次都从网上下载每条消息。但是如何识别这些路径并设置适当的图像而不会丢失消息中的位置。我的意思是如何用适当的图像替换该路径
    猜你喜欢
    • 2012-10-27
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多