Image Selector

이세진·2022년 6월 24일
0

iOS

목록 보기
26/46

생성일: 2022년 1월 28일 오후 11:42

  • sns의 기본인 사진 업로드를 위해 사용자가 기기의 앨범에서 사진을 선택할 수 있도록 구현해본다.
  • 이를 위해 Cocoapod 에서 YPImagePicker 패키지를 다운받는다.

MainTabController.swift

//MARK: - UITabBarControllerDelegate
/// 이미지 선택 화면 설정. YPImagePicker 패키지 사용
extension MainTabController: UITabBarControllerDelegate {
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        let index = viewControllers?.firstIndex(of: viewController)
        
        if index == 2 {
						// YPImagePicker 설정
            var config = YPImagePickerConfiguration()
            config.library.mediaType = .photo
            config.shouldSaveNewPicturesToAlbum = false
            config.startOnScreen = .library
            config.screens = [.library]
            config.hidesStatusBar = false
            config.hidesBottomBar = false
            config.library.maxNumberOfItems = 1
            
            let picker = YPImagePicker(configuration: config)
            picker.modalPresentationStyle = .fullScreen
            present(picker, animated: true, completion: nil)
            
            // 이미지 선택 또는 취소버튼 누른 후 기존 화면으로 돌아가기
            didFinishPickingMedia(picker)
        }
        
        return true
    }
    
}
  • extension을 활용하여 UITabBarControllerDelegate 프로토콜과 shouldSelect 함수를 불러온다.
  • shouldSelect 함수는 탭바에서 특정 아이콘을 클릭하여 해당 컨트롤러로 진입하려 할 때 호출된다.
  • Image Selector를 위한 컨트롤러의 인덱스 번호는 전체 탭바에 속한 컨트롤러 중에서 2번이다.
  • 이를 통해 index가 2 일 때 YPImagePicker 컨트롤러를 생성하고 화면에 present 한다.
// 이미지 선택 후에 돌아가기
func didFinishPickingMedia(_ picker: YPImagePicker) {
  picker.didFinishPicking { items, _ in
      picker.dismiss(animated: true) {
          guard let selectedImage = items.singlePhoto?.image else { return }
          print("DEBUG: selected image is \(selectedImage)")
      }
  }
}
  • YPImagePicker에서 사용자가 이미지를 선택 한 후에 기존 화면으로 돌아오기 위한 작업이 필요하다.
  • 이를 위해 MainTabController에 didFinishPickingMedia라는 함수를 생성하여 picker가 didFinishPicking이 되면 선택된 이미지를 가지고 picker를 빠져나오도록 한다.

실행 화면

profile
나중은 결코 오지 않는다.

0개의 댓글