【Swift4】UIViewからUIImageを取得する方法

2020年8月29日

UIViewの上に表示されている全てのUIViewやUILabel、UIButtonやUIImageVuewをすべてまとめてUIImageとして取得する方法についてご紹介します。

この方法はUIViewクラスを継承している
・UILabel
・UIButton
・UIImageView
などのクラスで使用することができます。

UIViewからUIImageを取得する方法

// UIViewからUIImageに変更する
func viewToImage(_ view : UIView) -> UIImage {
    
    // キャプチャする範囲を取得する
    let rect = view.bounds
    
    // 画像のcontextを作成する
    UIGraphicsBeginImageContextWithOptions(rect.size, false, 1.0)
    
    // contextを取得する
    let context : CGContext = UIGraphicsGetCurrentContext()!
    
    // view内の描画をcontextに複写する
    view.layer.render(in: context)
    
    // contextをUIImageとして取得する
    let image : UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    
    // contextを閉じる
    UIGraphicsEndImageContext()
    
    return image
}