[Swift] UIIMageView에 표시된 이미지를 터미널에 저장

이번에는 UIimageView에 표시된 이미지를 카메라 캐릭터에 저장해 보겠습니다!

완성형


다음 GIF 이미지는 CollectionView에서 임의의 이미지를 선택한 후 화면 이동을 통해 이미지를 저장합니다. 이번에는 화면 이동 후의 이미지 저장 부분만 소개합니다.

1. UIIMage에 클릭 이벤트 추가


UIIMageView를 클릭하면 포함된 UIIMage를 가져옵니다.
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //UIImageViewのインスタンスを生成
        let imageView = UIImageView(image: UIImage(named: "sample.png"))
        let width = view.frame.width
        let height = view.frame.height
        imageView.frame.size = CGSize(width: width, height: height/3)
        imageView.contentMode = .scaleAspectFill
        imageView.clipsToBounds = true

        // UIImageView にタップイベントを追加
        imageView.userInteractionEnabled = true
        imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.saveImage(_:))))

        // 画面の中心に UIImageView を配置
        imageView.center = self.view.center
        self.view.addSubview(imageView)
    }

// セーブを行う
    @objc func saveImage(_ sender: UITapGestureRecognizer) {

        //タップしたUIImageViewを取得
        let targetImageView = sender.view! as! UIImageView
        // その中の UIImage を取得
        let targetImage = targetImageView.image!
        //保存するか否かのアラート
        let alertController = UIAlertController(title: "保存", message: "この画像を保存しますか?", preferredStyle: .alert)
        //OK
        let okAction = UIAlertAction(title: "OK", style: .default) { (ok) in
            //ここでフォトライブラリに画像を保存
            UIImageWriteToSavedPhotosAlbum(targetImage, self, #selector(self.showResultOfSaveImage(_:didFinishSavingWithError:contextInfo:)), nil)
        }
        //CANCEL
        let cancelAction = UIAlertAction(title: "CANCEL", style: .default) { (cancel) in
            alertController.dismiss(animated: true, completion: nil)
        }
        //OKとCANCELを表示追加し、アラートを表示
        alertController.addAction(cancelAction)
        alertController.addAction(okAction)
        present(alertController, animated: true, completion: nil)
    }
 // 保存結果をアラートで表示
    func showResultOfSaveImage(_ image: UIImage, didFinishSavingWithError error: NSError!, contextInfo: UnsafeMutableRawPointer) {

        var title = "保存完了"
        var message = "カメラロールに保存しました"

        if error != nil {
            title = "エラー"
            message = "保存に失敗しました"
        }

        let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)

        // OKボタンを追加
        alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))

        // UIAlertController を表示
        self.present(alert, animated: true, completion: nil)
    }

2. 프라이버시 설정 변경


코드는 여기에서 완성하지만, 반드시 해야 할 일이 하나 더 있다.
info.plist의 Privacy 설정반드시 추가해야 할 것은 다음과 같은 두 가지다.
  • Privacy - Photo Library Usage Description
  • Privacy - Photo Library Additions Usage Description
  • 위의 두 값을 추가하여 다음 이미지로 변경하면 첫 번째 이미지를 저장할 때 경고를 표시하고 갤러리에 대한 액세스를 요청할 수 있습니다.

    좋은 웹페이지 즐겨찾기