먼저 피커뷰 델리게이트 설정
//MARK: - 피커뷰 델리게이트 설정
extension DetailViewController: 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("이미지 못 불러왔음!!!!")
}
}
}
//MARK: - 이미지뷰가 눌렸을때의 동작 설정
// 제스쳐 설정 (이미지뷰가 눌리면, 실행)
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 = 0
configuration.filter = .any(of: [.images, .videos])
// 기본설정을 가지고, 피커뷰컨트롤러 생성
let picker = PHPickerViewController(configuration: configuration)
// 피커뷰 컨트롤러의 대리자 설정
picker.delegate = self
// 피커뷰 띄우기
self.present(picker, animated: true, completion: nil)
}
'UIKIT' 카테고리의 다른 글
CollectionView 만들기 (코드로 구현) (1) | 2024.02.25 |
---|---|
네비게이션 바에 배경 색상 넣기.... (0) | 2024.02.20 |
알림창 안에 맵 넣기 (2) | 2024.02.01 |
알림창 (0) | 2024.02.01 |
내비게이션 타이틀에 이미지 표현하기 (0) | 2024.01.31 |