관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] UIView를 UIImage로 변환 방법, UIView to UIImage (asImage) 본문

iOS 응용 (swift)

[iOS - swift] UIView를 UIImage로 변환 방법, UIView to UIImage (asImage)

jake-kim 2021. 7. 30. 22:21

UIView에 extension으로 asImage()추가

  • UIGraphicsImageRenderer(bounds:)의미: Core Graphics 지원 이미지를 만들기 위한 그래픽 렌더러
  • UIView의 layer.render(in:)에서 렌더러 context를 넣으면 기존 UIView가 UIImage로 변환
extension UIView {  
  func asImage() -> UIImage {
        let renderer = UIGraphicsImageRenderer(bounds: bounds)
        return renderer.image { rendererContext in
            layer.render(in: rendererContext.cgContext)
        }
    }
}
  • image처럼 사용 
class ViewController: UIViewController {

    lazy var myView: UIImageView = {
        let view = UIImageView(frame: .init(x: 100, y: 100, width: 200, height: 200))

        return view
    }()

    lazy var customView: UIView = {
        let view = UIView(frame: .init(x: 100, y: 100, width: 100, height: 100))
        view.backgroundColor = .cyan

        let label = UILabel()
        label.text = "타이틀"
        label.textColor = .black
        label.sizeToFit()

        view.addSubview(label)

        return view
    }()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(myView)
        let image = customView.asImage() // <- 이미지처럼 사용
        myView.image = image
    }
}

뷰가 아닌 Image로 표출

Comments