2017-01-28 25 views
1

我试图保存我的视图(红色视图)到设备的照片库,但保存后它有白色。为什么我的UIView画成白色矩形?

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) 
} 

为什么?

+0

这是一个好问题。如果您将标题更改为“为什么我的UIView绘制为白色矩形?”,我认为它可以帮助其他人解决同样的问题。因为它与保存到相册没有任何关系。 – par

+0

好点。谢谢。更名为 –

回答

1

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

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

你的情况,你可以改变redView.draw(rect)到:

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

还有其他的方法,你可以使用太多,比如这一个使用视图的层:

guard let context = UIGraphicsGetCurrentContext() else { return } 

redView.layer.render(in: context) 
+0

It works great!非常感谢你! –

相关问题