ViewController.swift
class MemoDetailViewController: UIViewController {
...
// 제스쳐 설정 (이미지뷰가 눌리면, 실행)
func setupTapGestures() {
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(touchUpImageView))
detailView.mainImageView.addGestureRecognizer(tapGesture)
detailView.mainImageView.isUserInteractionEnabled = true
}
@objc func touchUpImageView() {
print("이미지뷰 터치")
setupImagePicker()
}
func setupImagePicker() {
// 기본설정 셋팅
var configuration = PHPickerConfiguration()
configuration.selectionLimit = 1 //리미트 0이면 무한대 설정가능,
configuration.filter = .any(of: [.images, .videos]) //이미지, 비디오 다. 가능
// 기본설정을 가지고, 피커뷰컨트롤러 생성
let picker = PHPickerViewController(configuration: configuration)
// 피커뷰 컨트롤러의 대리자 설정
picker.delegate = self
// 피커뷰 띄우기
self.present(picker, animated: true, completion: nil)
}
...
}
extension MemoDetailViewController: PHPickerViewControllerDelegate {
// 사진이 선택이 된 후에 호출되는 메서드
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
// 피커뷰 dismiss
picker.dismiss(animated: true)
let itemProvider = results.first?.itemProvider
if let itemProvider = itemProvider, itemProvider.canLoadObject(ofClass: UIImage.self) {
itemProvider.loadObject(ofClass: UIImage.self) { (image, error) in
DispatchQueue.main.async {
// 선택한 이미지를 이미지뷰에 표시
self.detailView.mainImageView.image = image as? UIImage
}
}
} else {
print("이미지 불러오기 실패")
}
}
}
'PROGRAMMING CODE > SWIFT' 카테고리의 다른 글
[Swift] Tuist 외부 패키지, 의존성 주입과정(Xcode SPM) (0) | 2023.12.26 |
---|---|
[swift] iOS <-> db 정리 (0) | 2023.12.13 |
[UIKit] TextView placeholder 구현 (0) | 2023.12.12 |
[UIkit] Navigation Bar (코드) (0) | 2023.12.12 |
[UIkit] Tap bar (storyboard) (0) | 2023.12.01 |