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

标签 swift uiimage uicollectionviewcell

所以我有一个带有 UIImage 的 UICollectionViewCell,并且我试图使 UIImage 具有纯白色背景,并在其顶部覆盖文本。我搜索了如何分别执行这些操作,这就是我所拥有的:

创建纯色 UIImage:

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函数是:

func textToImage(drawText text: NSString, inImage image: UIImage, atPoint point: CGPoint) -> UIImage {
    let textColor = UIColor.black
    let textFont = UIFont(name: "Helvetica Neue", size: 74)

    UIGraphicsBeginImageContext(image.size)

    let textFontAttributes = [
        NSFontAttributeName: textFont,
        NSForegroundColorAttributeName: textColor,
        ] as [String : Any]
    image.draw(in: CGRect(origin: CGPoint.zero, size: image.size))

    let rect = CGRect(origin: point, size: image.size)
    text.draw(in: rect, withAttributes: textFontAttributes)

    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return newImage!
}

然后将 textImage 设置为 UICollectionViewCell 的 UIImage。

textToImage 函数适用于普通图像,但如果我尝试先创建纯色图像,然后尝试在新创建的图像上调用 textToImage,纯色会显示,但文本不会显示。关于这里可能出现什么问题有什么建议吗?谢谢!

最佳答案

几个问题。您的主要问题是 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)

关于swift - 创建一个纯色的 UIImage 并在顶部添加文本(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47915958/

相关文章:

iphone - 获取UIImage的像素颜色

iphone - UIImage 中的一个圆圈

ios - 如何根据内容动态调整 UICollectionViewCell 的高度?

ios - CollectionView 项目在 iPhone X 屏幕上未正确分配

swift - 了解 Swift 3.1 中优先组的分配

ios - 注销后如何重新加载 Root View Controller ?

swift - 如何在单独的函数中以编程方式快速创建 UIImageView?

ios - 获取点击手势的展开值

ios - 如何使用 Swift 将模糊效果添加到 UIImage 中?

ios - Collection View 显示滚动时选择的尚未选择的单元格