Swift如何在图片上放置图片

时间:2015-08-19 20:57:40

标签: ios xcode swift photo

我想制作一个应用程序,让您拍照,然后从一组预制的"图片中选择"因为你将在那张照片上面申请。

例如,你拍了一张某人的照片,然后用一根芥子,一只鸡和假嘴唇。

应用示例是Aokify app。

然而,搜索互联网的各个角落,但无法找到一个能指出正确方向的例子。

3 个答案:

答案 0 :(得分:2)

另一个更简单的实现可能是使用UIImageView作为父视图,然后将UIImageView添加为您希望覆盖在原始图像上的任何图像的子视图。

let mainImage = UIImage(named:"main-pic")
let overlayImage = UIImage(named:"overlay")

var mainImageView = UIImageView(image:mainImage)
var overlayImageView = UIImageView(image:overlayImage)

self.view.addSubview(mainImageView)
mainImageview.addSubview(overlayImageView)

编辑:由于这已成为公认的答案,我觉得值得一提的是,定位overlayImageView还有不同的选项:您可以在添加第一个视图后将叠加添加到同一个父级,或者您可以将叠加层添加为主imageView的子视图,如示例所示。

区别在于设置叠加帧的坐标时的参照系:是否希望它们具有相同的坐标空间,或者您是否希望叠加坐标相对于主图像而不是父图像。 / p>

答案 1 :(得分:2)

为了正确回答问题并满足要求,您需要添加选项,以便根据原始图像移动并将叠加图像放置在适当的位置,但在另一张图像上添加一张图像的代码将是以下一种 -

Swift3

extension UIImage {
    func overlayed(with overlay: UIImage) -> UIImage? {
        defer {
            UIGraphicsEndImageContext()
        }
        UIGraphicsBeginImageContextWithOptions(size, false, scale)
        self.draw(in: CGRect(origin: CGPoint.zero, size: size))
        overlay.draw(in: CGRect(origin: CGPoint.zero, size: size))
        if let image = UIGraphicsGetImageFromCurrentImageContext() {
            return image
        }
        return nil
    }
}

使用 -

image.overlayed(with: overlayImage)

也可用here as a gist

该代码最初用于回答this question

答案 2 :(得分:0)

感谢jesses.co.tt提供我需要的提示。

该方法称为UIGraphicsContext。

我终于找到了这个教程:https://www.youtube.com/watch?v=m1QnT72I6f0它来自新波士顿。