最终目标是使用相机拍摄照片,然后拍摄照片,并在照片上叠加标签,然后保存三层的合成。
我的大部分工作 - 唯一可以解决的是如何正确定位标签。
我想要coords&标签的尺寸类似于(x:0,y:500,宽度:416,高度:55),但每当我设置这些坐标时,标签会变得非常扭曲。
我也尝试将它们设置为(0,0,416,553),它们是照片和放大器的全尺寸。叠加,但只是将标签放在绝对中心。
以下是我正在使用的代码:
func generateImageWithText(text: String) -> UIImage {
let image = UIImage(named: "9thGup-43")!
let imageView = UIImageView(image: image)
imageView.backgroundColor = UIColor.clear
imageView.frame = CGRect(x: 0, y: 0, width: 414, height: 553)
imageView.contentMode = .scaleAspectFit
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 414, height: 553))
label.backgroundColor = UIColor.clear
label.textAlignment = .center
label.textColor = UIColor.white
label.font = UIFont(name: "Japan", size: 45)!
label.text = text
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5
let customSize = CGSize(width: 414.0, height: 553.0)
UIGraphicsBeginImageContextWithOptions(customSize, false, 0);
imageView.layer.render(in: UIGraphicsGetCurrentContext()!)
label.layer.render(in: UIGraphicsGetCurrentContext()!)
let imageWithText = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
return imageWithText!
}
有人知道我如何正确定位标签,使其位于我正在创建的合成图像的底部吗?
答案 0 :(得分:0)
您所要做的就是改变框架的尺寸并将其向下推。我不知道底部是什么意思,所以我想说你想让标签垂直居中在图像的底部三分之一处:
let frame = imageView.frame
let label = UILabel(frame: CGRect(x: 0, y: frame.size.height * 0.67, width: frame.size.width, height: frame.size.height * 0.33 ))