私はUIImageでUICollectionViewCellを持っています。そして、UIImageに上に重ねられたテキスト付きの無地の背景があるようにしようとしています。私は別に、これらのそれぞれを行う方法まで検索し、これは私が持っているものです。単色でUIImageを作成し、上にテキストを追加します(Swift)
ソリッド色でUIImageを作成:
let textImage = textToImage(drawText: "Placeholder text", inImage: whiteImage, atPoint: CGPoint(x: 20.0, y: 20.0))
:その後、私は機能
textToImage
を呼んでいる
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()
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!
}
そして:textToImage
機能がある
UICollectionViewCellのUIImageとしてtextImageを設定します。
textToImage関数は通常のイメージで機能しますが、最初に単色でイメージを作成しようとすると、新しく作成されたイメージでtextToImageを呼び出そうとすると、単色が表示されますがテキストは表示されません。ここで何が問題になるかについてのアドバイスはありますか?ありがとう!