Not looking at this as an answer, just help. Here's my working code written in Xcode 11.2 targeting iOS 13.0:
class ViewController: UIViewController {
let imagePicker = UIImagePickerController()
var btnOpenImage = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
btnOpenImage.translatesAutoresizingMaskIntoConstraints = false
btnOpenImage.backgroundColor = UIColor.red
btnOpenImage.setTitle("Show Picker", for: .normal)
btnOpenImage.addTarget(self, action: #selector(showImagePicker), for: .touchUpInside)
view.addSubview(btnOpenImage)
btnOpenImage.widthAnchor.constraint(equalToConstant: 180).isActive = true
btnOpenImage.heightAnchor.constraint(equalToConstant: 80).isActive = true
btnOpenImage.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
btnOpenImage.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
}
}
extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@objc func showImagePicker() {
imagePicker.allowsEditing = false
imagePicker.sourceType = .photoLibrary
imagePicker.modalPresentationStyle = .fullScreen
present(imagePicker,
animated: true,
completion: nil)
}
@objc internal func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: false, completion: nil)
}
}
It doesn't do much, but it does show things full screen. It was pulled from a much larger project and tested on an iPad Mini running 13.1, and another running 13.2. Also tested in the iPhone 11 Pro simulator.
One thing, while I added the NSPhotoLibraryUsageDescription
key to info.plist
, it never actually popped anything up!?!