iOS 응용 (swift)
[iOS - swift] View를 UIImage로 변환(캡쳐하기), 이미지 공유하기 기능 (카톡, 메세지, 메모 등)
jake-kim
2020. 11. 23. 21:11

View를 이미지로 변환 & 공유하기
- View를 UIImage로 변환
extension UIView {
func transfromToImage() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(bounds.size, isOpaque, 0.0)
defer {
UIGraphicsEndImageContext()
}
if let context = UIGraphicsGetCurrentContext() {
layer.render(in: context)
return UIGraphicsGetImageFromCurrentImageContext()
}
return nil
}
}
- 이미지 공유하기
let vc = UIActivityViewController(activityItems: [image], applicationActivities: nil)
vc.excludedActivityTypes = [.saveToCameraRoll] // 이 코드가 없다면, 공유하기 화면에서 "save image"를 누를시 crash발생
present(vc, animated: true)
- save image기능을 넣으려면, info.plist에 아래 시스템 팝업 정보를 추가해야 가능

- Storyboard

- 전체 코드
//
// ViewController.swift
// TestCapture
//
// Created by 김종권 on 2020/11/23.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var myView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnShare(_ sender: Any) {
guard let image = myView.transfromToImage() else {
return
}
let vc = UIActivityViewController(activityItems: [image], applicationActivities: nil)
vc.excludedActivityTypes = [.saveToCameraRoll] //
present(vc, animated: true)
}
}
extension UIView {
func transfromToImage() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(bounds.size, isOpaque, 0.0)
defer {
UIGraphicsEndImageContext()
}
if let context = UIGraphicsGetCurrentContext() {
layer.render(in: context)
return UIGraphicsGetImageFromCurrentImageContext()
}
return nil
}
}