创建一个纯色的UIImage并在顶部添加文本(Swift)

时间:2017-12-20 23:50:15

标签: swift uiimage uicollectionviewcell

所以我有一个带有UIImage的UICollectionViewCell,我试图让UIImage有一个纯白色的背景,文本覆盖在它上面。我搜索了如何单独完成这些操作,这就是我所拥有的:

使用纯色创建UIImage:

/user_code/node_modules/firebase-admin/lib/database/database.js

然后我用:{/ p>调用函数let rect = CGRect(origin: .zero, size: CGSize(width: 1, height: 1)) UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0) let color = UIColor.white color.setFill() UIRectFill(rect) let whiteImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext()

textToImage

let textImage = textToImage(drawText: "Placeholder text", inImage: whiteImage, atPoint: CGPoint(x: 20.0, y: 20.0)) 函数的位置:

textToImage

然后将textImage设置为UICollectionViewCell的UIImage。

textToImage函数适用于普通图像,但如果我尝试先创建一个纯色图像,然后尝试在新创建的图像上调用textToImage,则显示纯色但文本不显示。关于这可能是什么问题的任何建议?谢谢!

2 个答案:

答案 0 :(得分:0)

一些问题。你的主要原因是whiteImage只有1x1分。因此,当您将其传递给textToImage时,您将创建一个新的1x1图像。在如此小的图像上很难阅读文字。

使用更有用的尺寸创建whiteImage,事情会好得多。

let rect = CGRect(origin: .zero, size: CGSize(width: 600, height: 300)) // pick a useful size

您还应该更改:

UIGraphicsBeginImageContext(image.size)

为:

UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale)

答案 1 :(得分:0)

@rmaddy指出了一些重要的事情,但您是否也考虑过使用UIKit API?在创建之后我不知道你是否需要对图像做任何事情(将它发送到服务器,保存到库等),但是你所描述的内容非常简单,而且性能也非常好(如果您只是将图像视图的背景颜色设置为白色并在其上添加标签,这可能无关紧要,我不知道您的图像有多大。

即使您确实需要捕获该图像并使用它执行某些操作,iOS也可以很容易地截取UIView。 Here是相关链接。