Ch.15 Bronze: Editing an Image

# 이미지 선택 시 편집 허용

  • UIImagePickerController 가 기본으로 제공하는 편집창을 사용해서 유저가 이미지를 편집할 수 있게 하고, 편집된 이미지를 아이템의 이미지로 설정하는 게 과제!


# allowsEditing

  • 편집을 허용하기 위해서는 UIImagePickerController 의 allowsEditing 프로퍼티를 true 로 설정해주면 된다...매우 간단 모든 과제가 이랬으면...
class DetailViewController: UIViewController, UITextFieldDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
    func imagePicker(for sourceType: UIImagePickerController.SourceType) -> UIImagePickerController {
        let imagePicker = UIImagePickerController()
        imagePicker.sourceType = sourceType
        imagePicker.delegate = self
        imagePicker.allowsEditing = true
        return imagePicker
    }
}

# .editedImage

  • 편집창은 띄웠는데, 막상 이미지를 편집하고 선택을 완료하면 편집된 이미지가 아닌 원본이 띄워져 있는 것을 확인할 수 있다. 이미지를 선택하면 델리게이트가 imagePickerController(_:didFinishPickingMediaWithInfo:) 메서드를 통해 선택된 이미지를 담고 있는 info 딕셔너리를 전달받는데, 편집을 허용하는 경우 여기에 편집된 버전도 들어있다. 따라서 딕셔너리에서 편집된 이미지를 가져와서 아이템의 이미지로 설정해줘야 한다! 강의 코드에서는 원본 이미지를 가져왔기 때문에 편집이 반영이 안됐던 것...!
class DetailViewController: UIViewController, UITextFieldDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

        let image = info[.editedImage] as! UIImage  // 편집 버전!
        
        imageStore.setImage(image, forKey: item.itemKey)
        
        imageView.image = image
        
        dismiss(animated: true)
    }
}

좋은 웹페이지 즐겨찾기