2016-03-01 30 views
2

我正在创建一个应用程序,用户可以从一组图像(多个)中进行选择,并将所选图像添加到所选背景。然后他们应该能够保存图像,所以我需要帮助将所有图像合并为一个以保存。如何将多个重叠的UIImage合并到Swift中的一个UIImage中?

ViewController有一个大的UIImageView作为背景。当用户选择要添加的图像时,图像将作为子视图添加到UIImageView。

//chosenImage is a UIImageView with an chosen image 
backgroundImageView.addSubView(chosenImage) 

我需要保存图像作为backgroundView的大小与覆盖图像。

我该如何做到这一点?

我周围搜索,但只发现Obj-C的答案和一些不工作。

对于那些寻找相同的答案,这是你做了什么,以节省按下按钮图像:

@IBAction func saveImage(sender: AnyObject) { 

    let snapShot:UIView = backgroundImage.snapshotViewAfterScreenUpdates(true) 

    UIGraphicsBeginImageContext(backgroundImage.bounds.size) 

    snapShot.drawViewHierarchyInRect(backgroundImage.bounds, afterScreenUpdates: true) 

    let image:UIImage = UIGraphicsGetImageFromCurrentImageContext() 

    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 


} 

回答

2

我需要将图像保存为backgroundView的大小与覆盖图片。

你有两种选择。一种是在代码中绘制合成图像,只是将图像按图像视图及其子视图的位置绘制到图像图形上下文中。然而,在你的情况下,一个简单的方法是简单地对渲染快照图像视图:这将实际上是图像视图及其子视图的屏幕截图,这正是用户正在看到的。

+0

好的,真棒。那么我如何渲染或快照图像视图?这些对我来说都是新想法。 –

+2

转到UIView类参考并查看“捕获视图快照”一节。 – matt

+0

好的,很简单。是否可以将UIView转换为图像以便保存到相机胶卷?我不需要任何关于保存的细节,只是验证我将能够使用返回的内容。 –

相关问题