Project/Memo

메모 작성 화면 구현 (카메라, 앨범 접근)

밤새는 탐험가89 2024. 1. 26. 00:51

 

 

 

 

스토리보드에 정의된 메모 작성 화면

(아래 폭포수 이미지는 해당 위치에 이미지가 배치된다는 걸 알려주기 위해 일부러 넣음)

 

 

 

 

 

사용자가 카메라 버튼을 눌렀을 때 호출되는 액션 메소드 구현

 

 

 

 

// 카메라 버튼을 클릭했을 때 호출되는 메소드
    @IBAction func pick(_ sender: Any) {
        
        let alert = UIAlertController(title: nil, message: "이미지를 가져올 곳을 선택해주세요", preferredStyle: .actionSheet)
        
        // 이미지 피커 인스턴스를 생성
        let picker = UIImagePickerController()
        
        picker.delegate = self
        picker.allowsEditing = true
        
        alert.addAction(UIAlertAction(title: "카메라", style: .default){ (_) in
            picker.sourceType = .camera
            self.present(picker, animated: false)
        })
        alert.addAction(UIAlertAction(title: "저장앨범", style: .default){ (_) in
            self.present(picker, animated: false)
            
        })
        
        // 이미지 피커 화면을 표시
        self.present(alert, animated: false)
    }

 

 

위의 구현된 이미지 피커 컨트롤러에 대한 순서는 다음과 같음

 

1. 이미지 피커 컨트롤러 인스턴스 생성

 

 

 

2. 이미지 피커 컨트롤러 인스턴스의 델리게이트 속성을 현재의 뷰 컨트롤러 인스턴스로 설정

3. 이미지 피커 컨트롤러의 이미지 편집을 허용

 

 

 

4. 이미지 피커 컨트롤러 화면을 표시 

 

 

 

 

이미지 피커 컨트롤러는 델리게이트 패턴 기반으로 동작

여기서 MemoFormVC 뷰 컨트롤러는 이미지 피커 컨트롤러의 동작에 참여하지 않지만, 

만약에 이미지 피커 컨트롤러를 통한 특정 이벤트가 발생할 경우 뷰 컨트롤러에 알려야 함 

이 때, 알리는 방법은 메소드 호출인데, 이를 델리게이트 메소드라고 함 

 

 

델리게이트 메소드 

    // 이미지 선택을 완료했을 때 호출되는 메소드
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        self.preview.image = info[UIImagePickerController.InfoKey.editedImage] as? UIImage
        
        picker.dismiss(animated: false)
    }

 

 

델리게이트 메소드는 미리 약속된 부분이기 때문에 

구현함에 있어 정확하게 해야 함 

 

 

'Project > Memo' 카테고리의 다른 글

메모 상세 화면 구현  (1) 2024.01.26
메모 목록 화면 구현  (0) 2024.01.26
메모 작성 화면 구현 (메모 저장)  (1) 2024.01.26
메모 앱 기능 구현 (데이터 모델 작업)  (1) 2024.01.26