为什么我的UIView画成白色矩形?

时间:2017-01-28 18:12:36

标签: swift3

我尝试将我的视图(红色视图)保存到设备的照片库,但保存后它有白色。

func saveViewToImage()
{
    redView.backgroundColor = UIColor.red
    let rect = CGRect(origin: CGPoint.zero, size: redView.frame.size)

    UIGraphicsBeginImageContextWithOptions(rect.size, false, UIScreen.main.scale)

    redView.draw(rect)
    let resultImage = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()

    UIImageWriteToSavedPhotosAlbum(resultImage!, nil, nil, nil)
}

为什么?

1 个答案:

答案 0 :(得分:1)

UIView draw(_ rect:)方法默认情况下不执行任何操作。它就在那里你可以继承UIView并做自己的绘图。

为了将您的视图绘制到上下文中,您需要使用专门为此创建的功能之一。

在您的情况下,您可以将redView.draw(rect)更改为:

redView.drawHierarchy(in: rect, afterScreenUpdates: true)

您还可以使用其他方法,例如使用视图层的方法:

guard let context = UIGraphicsGetCurrentContext() else { return }

redView.layer.render(in: context)