2017-01-28 19 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

は、これはAです良い質問。タイトルを「なぜ、私のUIViewが白い四角形として描くのですか?」というようなものに変更した場合、同じ問題を抱えている他の人々に役立つかもしれないと思います。それは実際に写真アルバムに保存することとは関係がないからです。 – par

+0

良い点。ありがとうございました。名前が変更されました –

答えて

1

UIViewdraw(_ rect:)メソッドはデフォルトで何も行いません。そこにはサブクラスUIViewがあり、あなた自身の絵を描くことができます。

ビューをコンテキストに描画するには、そのために特別に作成された関数の1つを使用する必要があります。あなたがredView.draw(rect)を変更することができ、あなたの場合は

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

あなたは、このようなビューのレイヤーを使用して、この一つとして、あまりにも使用することができ、他の方法があります。

guard let context = UIGraphicsGetCurrentContext() else { return } 

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

素晴らしいです!どうもありがとうございました! –

関連する問題