需要帮助在上下文中定位标签(Swift 3)

时间:2016-10-29 23:19:22

标签: ios core-graphics swift3

最终目标是使用相机拍摄照片,然后拍摄照片,并在照片上叠加标签,然后保存三层的合成。

我的大部分工作 - 唯一可以解决的是如何正确定位标签。

我想要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!
}

有人知道我如何正确定位标签,使其位于我正在创建的合成图像的底部吗?

1 个答案:

答案 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 ))