반응형
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 |