【发布时间】:2017-12-21 11:34:17
【问题描述】:
所以我有一个带有 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,纯色会显示,但文本不会。关于这里可能出现什么问题的任何建议?谢谢!
【问题讨论】:
标签: swift uiimage uicollectionviewcell