将图像合并为文本的一部分

Posted

技术标签:

【中文标题】将图像合并为文本的一部分【英文标题】:Incorporate an image as part of text 【发布时间】:2017-04-18 23:10:10 【问题描述】:

有没有用图像创建文本/字体并将其用作字符串的一部分?我想在我的应用程序的各个地方的标签等金额之前显示我们的硬币图像。因此,例如,不是 4.00 美元,而是我的自定义货币图像而不是 $ 符号。

我想知道是否有办法将我们的货币图像转换为某种字体文本(就像 font awesome 所做的那样)并在字符串中使用它。

如果不是这样,有什么好的方法可以解决这个问题,这样我们就可以使用我们自己的自定义货币图像在整个应用程序中显示货币金额?某种自定义标签?

【问题讨论】:

字体在技术上是一个字形表和存储在表格中的相关数据,以帮助处理偏移量、大小等。我猜你可以创建一个基本上有一个“字体”单个字符并且可调整大小,但这似乎需要付出很多努力。更好的方法可能是创建一个表情符号。 (也许。我对此知之甚少。)如果是这样,它是一个 Unicode 字符,您可以将其用作文本。最简单的选择是继承 UILabel,将显示图像所需的内容添加到 draw(rect:) 方法,然后将其添加到 UI 中。是的,你可能在它和金额之间有一些“前导”空间,但它有效。 【参考方案1】:

您可以使用NSAttributeString 通过NSTextAttachment 来完成此操作

let dollarImage = UIImage(named: "DollarSign")

let attachment = NSTextAttachment()
attachment.image = dollarImage
attachment.bounds = CGRect(origin: .zero, size: dollarImage.size)

let attachmentString = NSAttributedString(attachment: attachment)
let currencyString = NSAttributedString(string: "4.40")

let attributedString = NSMutableAttributedString(attributedString: attachmentString)
attributedString.append(currencyString)

【讨论】:

这是一个合理的解决方案,但是如何确保图像高度与文本高度很好地对齐? 设计图像以匹配您期望的文本的最佳方式。如有必要,请在图像中包含空格。 抱歉,没有关注...如何在图片中包含空格? 也许你的图标是 10x5 像素。所以你用图标周围的填充来保存它,使图像成为 14x10 像素,这样它就在图标周围建立了空白。

以上是关于将图像合并为文本的一部分的主要内容,如果未能解决你的问题,请参考以下文章

将两个 Mat 图像合并为一个

Ghostscript 将图像/表单与文本文件合并

获取UIImage,将其转换为多部分图像字符串,写入文本文件iOS

如何从图像中提取所需的文本部分,而不是使用 OCR 提取图像中的所有文本?

斯威夫特:如何在我的 AVPlayerLayer 顶部添加图像/文本以使其成为视频的一部分?

如何将iphone屏幕截图保存为jpeg图像?