正在尝试将UILabel
放置到UIImage
中,我可以更改标签框架的宽度和高度
但无法更改X和Y值请帮助我更改X和Y值。
这就是我调用方法的方式
self.imfFront.image = generateImageWithText(text: "Hello World !")
这里是方法
func generateImageWithText(text: String) -> UIImage
{
let image = UIImage(named:"img_forest")!
let imageView = UIImageView(image: image)
imageView.backgroundColor = UIColor.clear
imageView.frame = CGRect(x:0, y:0, width:image.size.width, height:image.size.height)
let label = UILabel(frame: CGRect(x:50, y:50, width:image.size.width-50, height:image.size.height-50))
label.backgroundColor = UIColor.lightGray
label.textAlignment = .center
label.textColor = UIColor.white
label.text = text
UIGraphicsBeginImageContext(imageView.bounds.size)
imageView.layer.render(in: UIGraphicsGetCurrentContext()!)
label.layer.render(in: UIGraphicsGetCurrentContext()!)
let imageWithText = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
return imageWithText!
}
下面是参考图片
最佳答案
如果您要指定一个labelRect
这样:
let labelRect = CGRect(x: 50, y: 50, width: image.size.width - 100, height: image.size.height / 16)
let label = UILabel(frame: labelRect)
而不是:
label.layer.render...
你可以写:
label.drawHierarchy(in: labelRect, afterScreenUpdates: true)
然后,UIImageView中显示的结果图像将如下所示:
对labelRect的x或y值的任何更改都会移动标签。
一句话:你应该记住你是在一个图像上画的,所以标签字体的实际大小取决于图像的分辨率。根据您的要求,这可能是您的意图,也可能不是。