반응형

UIView, UIWebView 캡쳐하기

iOS7 이후부터 UIView에서 snapshotView 함수를 이용하여 
UIView의 내용을 이미지로 저장 할수 있다.

하지만 실제 사용하다 보면 가끔씩 정상적으로 캡쳐하지 못할때가 있었다.
그래서 예전 방식대로 다시 사용하고 있다. ㅠㅠ

UIView 에서의 화면 캡쳐

extension UIView {
    /**
     현재 뷰에 대한 화면 캡쳐
     
     - Parameter color: 라인 색상
     - Returns: 캡쳐된 화면 이미지 뷰 
     */
    func capture(_ shadow: Bool = false) -> UIView {
        UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, 0)
        self.layer.render(in: UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
        let snapshotImageView = UIImageView(image: image)
        if shadow  {
            snapshotImageView.layer.masksToBounds = false
            snapshotImageView.layer.cornerRadius = 0.0
            snapshotImageView.layer.shadowOffset = CGSize(width: -0.5, height: 0.0)
            snapshotImageView.layer.shadowRadius = 5.0
            snapshotImageView.layer.shadowOpacity = 0.4
        }
        
        return snapshotImageView
    }
}

UIWebView 에서의 화면 캡쳐

extension UIWebView {
    /**
     웹뷰의 화면을 캡쳐
     
     - Returns: 캡쳐된 화면 이미지 
     */
    func capture() -> UIImage {
        UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, scrollView.isOpaque, 0)
        
        let currentContentOffset = scrollView.contentOffset
        let currentFrame = scrollView.frame
        
        scrollView.contentOffset = CGPoint.zero
        scrollView.frame = CGRect(x: 0, y: 0, width: scrollView.contentSize.width, height: scrollView.contentSize.height)
        scrollView.layer.render(in: UIGraphicsGetCurrentContext()!)
        
        let image = UIGraphicsGetImageFromCurrentImageContext()!
        scrollView.contentOffset = currentContentOffset
        scrollView.frame = currentFrame
        
        UIGraphicsEndImageContext()
        
        return image
    }
}


반응형

'iOS > Tip' 카테고리의 다른 글

URLSession 사용시 참고  (0) 2016.12.08
메모리 정보 가져오기  (0) 2016.11.30
현재 IP 가져오기  (0) 2016.11.29
Cookies 저장과 값 읽기  (0) 2016.11.28
TextView, TextField에 메뉴 추가 하기  (0) 2016.10.14
아이폰 개발 기준 해상도  (1) 2016.10.14
iOS에서 세 자리수 마다 콤마(,) 넣기  (3) 2016.10.12
iOS 앱 이름과 버전 정보 가져오기  (0) 2016.10.11
Posted by 까칠코더
,