如何应用和移动UIImageView分层在另一个UIImageView Swift3上

时间:2017-03-10 15:31:59

标签: ios swift3 uiimageview

我在这里阅读了许多指南,如何创建一个合并两个现有图像的新图像,使用UIGraphics和两个UIImageViews的layer.render方法,最后我可以创建一个然后保存我的新图像。问题是我无法理解如何将第二个UIImageView放在我想要的位置,例如底部。我现在将发布合并图像的图像以及我的代码运行的功能,使其成为可能。

Captured merged photo enter image description here

这是我的代码,可以解决这个问题:

extension UIImage {

    class func imageWithWatermark(image1: UIImageView, image2: UIImageView) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(image1.bounds.size, false, 0.0)

        let frame = image1.frame
        image2.frame = CGRect(x: 0, y: frame.size.height * 0.80, width: frame.size.width, height: frame.size.height * 0.20 )

        image1.layer.render(in: UIGraphicsGetCurrentContext()!)
        image2.layer.render(in: UIGraphicsGetCurrentContext()!)



        let img = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return img!
    }
}

然后我保存合并图像的func:

func addWatermark() {
        let newImage = UIImage.imageWithWatermark(image1: cameraPreview, image2: provaImage)
        UIImageWriteToSavedPhotosAlbum(newImage, nil,nil,nil)
    }

1 个答案:

答案 0 :(得分:0)

您可以使用此功能合并两个图像,第二个将替换为底部

func mergeTwoImageSeconInBottom(backgroundImage: UIImage, imageOnBottom: UIImage) -> UIImage {
    let size = YOUR_CG_SIZE
    UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
    backgroundImage.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
    imageOnBottom.draw(at: CGPoint(x: (size.width - imageOnBottom.size.width) / 2, y: size.height - imageOnBottom.size.height))
    let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    return newImage
}