๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS

[iOS/Swift] UIImagePickerController ์‚ฌ์šฉํ•˜๊ธฐ

by ํ‹ด๋”” 2022. 8. 21.
728x90
๋ฐ˜์‘ํ˜•
  • UIImagePickerController ๊ฐ์ฒด ์ƒ์„ฑ
    private lazy var picker = UIImagePickerController().then {
        $0.delegate = self
    }

or

var picker = UIImagePickerController()

override func viewDidLoad() {
	picker.delegate = self
}

 

  • ๋ฒ„ํŠผ target ์„ค์ •
imageButton.addTarget(self, action: #selector(presentPhotoPicker), for: .touchUpInside)
    @objc func presentPhotoPicker() {
        present(picker, animated: true)
    }

 

  • UIImagePickerControllerDelgate & UINavigationControllerDelegate ๊ตฌํ˜„
extension DetailViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
        if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
            messageTextView.image = image
            picker.dismiss(animated: true)
        }
    }
}

์ด๋ฏธ์ง€ ์„ ํƒ ํ›„ didFinishPickingMediaWithInfo๊ฐ€ ํ•œ๋ฒˆ ํ˜ธ์ถœ ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€๋ฅผ ํƒญํ•œ ๋งŒํผ ํ˜ธ์ถœ ๋จ

๊ฐค๋Ÿฌ๋ฆฌ์—์„œ ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ํƒญํ•˜๋ฉด ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœ๋˜๋ฉด์„œ ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š”๋ฐ, ์ด๋•Œ dismiss๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœ๋˜๋ฉด picker๋ฅผ presentํ•œ vc๋„ dismiss ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ picker.dismiss(animated:)๋กœ ํ•ด์ฃผ์–ด์•ผ ํ•จ

 

๋งŒ์•ฝ image๋ฅผ ๋ฐ›์•„์™€ ์–ด๋ ˆ์ด์— append ์‹œ์ผœ์ฃผ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋น ๋ฅด๊ฒŒ ํƒญํ•œ ์ด๋ฏธ์ง€๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ append ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ”Œ๋ž˜๊ทธ ๋ณ€์ˆ˜ ์ƒ์„ฑํ•ด์„œ ๋ง‰์•„ ์ค„ ์ˆ˜ ์žˆ์Œ

private var isEnableAddPhoto = true
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
        if isEnableAddPhoto {
            isEnableAddPhoto = false
            if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
                picker.dismiss(animated: true) {
                    self.viewModel?.dataSource.append(image)
                    self.collectionView.reloadData()
                    self.isEnableAddPhoto = true
                }
            }
        }
    }

rx ์“ฐ๋ฉด ์ค‘๋ณต์œผ๋กœ append ๋˜๋Š”๊ฑฐ ๋ง‰์„ ์ˆ˜ ์žˆ์„ ํ…๋ฐ...๐Ÿ˜Œใ… ใ… 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€