将UIView转换为UIImage Swift 3

时间:2017-08-02 13:33:59

标签: ios iphone swift3 uiview uiimage

我正在制作一个将UIView转换为UIImage的扩展程序,但我遇到了一个奇怪的问题,即我能够在iOS模拟器中获得正确的图像但我在实际设备中获得了黑色图像。以下是我的代码

extension UIView {
func screenshotImage() -> UIImage {
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, 0.0);
    self.drawHierarchy(in: self.bounds, afterScreenUpdates: true)
    let screenShot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return screenShot!
}
}

任何人都可以解释我做错了什么,我无法在真实设备中获得正确的图像吗?

修改

观察:

每当我在模拟器中将UIView传递给此扩展时,我都会获得该视图的完美图像

每当我在实际设备中将UIView传递给此扩展时,我得到的图像完全是黑色而不是UIView中的元素,这与模拟器结果不同。

1 个答案:

答案 0 :(得分:6)

extension UIImage {
    class func imageWithView(view: UIView) -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
        view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)
        let img = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return img
    }
}

希望这有帮助!