Swift:将CALayers渲染为UIImage

时间:2015-01-03 07:03:46

标签: swift uiimage cgcontext

我目前在我的应用程序中有自定义进度视图。我试图绘制进度视图,然后拍摄快照"因此,我可以在需要的地方传递它。所以一旦我绘制了图层,我想将它们转换为单个UIImage。

这是我当前的代码,其中还包括尝试保存到文档目录以查看图像。

        UIGraphicsBeginImageContext(self.frame.size)

        self.backgroundRingLayer.renderInContext(UIGraphicsGetCurrentContext())
        self.progressRingLayer.renderInContext(UIGraphicsGetCurrentContext())
        let image = UIGraphicsGetImageFromCurrentImageContext()

        let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
        let documentsDirectory = paths[0] as String
        let data:NSData = UIImagePNGRepresentation(image) as NSData
        data.writeToFile(documentsDirectory, atomically: true)

        UIGraphicsEndImageContext()

我对使用CGContext等相对较新,所以我可能会对此有所了解。任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:0)

只需渲染超级视图的图层。它应该包括所有子视图和子图层。

self.view.renderInContext(UIGraphicsGetCurrentContext())