멜팅비의 개발 공부

[iOS/swift] UIImagePickerController를 활용해서 사진첩 사진 가져오기 본문

개발 공부/[iOS 개발]

[iOS/swift] UIImagePickerController를 활용해서 사진첩 사진 가져오기

멜팅비 2021. 6. 21. 21:01
반응형

프로필 사진을 설정하는 등 사진첩에서 사진을 가져오는 기능을 구현해야 할 때 UIImagePickerController를 활용하면 된다.

 

let imagePicker = UIImagePickerController()

override func viewDidLoad() {
	super.viewDidLoad()        
    imagePicker.delegate = self
    btnPicker.addTarget(self, action: #selector(btnPickerDidTap(:)), for: .touchUpInside)
}


@objc func btnPickerDidTap(_ sender: UIButton) {
	self.imagePicker.sourceType = .photoLibrary
    self.present(imagePicker, animated: true, completion: nil)
}


extension MyProfileViewController: UIImagePickerControllerDelegate {
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let image = info[UIImagePickerController.InfoKey.originalImage] {
            ivProfile.image = image as! UIImage
            
            // UIImage를 원형으로 크롭하는 코드
            ivProfile.layer.cornerRadius = ivProfile.frame.height / 2
            ivProfile.layer.borderWidth = 1
            ivProfile.layer.borderColor = UIColor.clear.cgColor
            ivProfile.clipsToBounds = true
        }
        dismiss(animated: true , completion: nil)
    }
}

extension MyProfileViewController: UINavigationControllerDelegate {
    
}

extension을 통해 UIImagePickerControllerDelegate와 UINavigationControllerDelegate를 채택한다.

UINavigationControllerDelegate를 꼭 함께 채택해야지 오류가 발생하지 않는다.

 

버튼을 눌렀을 때 present를 해서 사진첩이 열리고 사진을 선택하는 순간 Delegate의 imagePickerController 메소드가 호출된다.

 

여기서 이미지 정보를 UIImage 가져와 이미지뷰의 이미지를 바꿔준다.

 

프로필 사진처럼 원형 모양으로 이미지를 자르고 싶으면 주석 아래있는 코드를 작성하면 된다.

 

반응형
Comments