Problème affichage de la librairie photo en mode paysage - #imagePickerController - # photoLibrary

Bonjour à tous,

J’ai un petit souci que j’aimerai régler.
C’est lors de l’ouverture de la librairie photos. Tout se passe correctement en mode portait mais lorsque je suis en mode paysage, il repasse par le mode portait pour ouvrir la librairie. Le résultat fonctionne mais c’est très moche.
Mes recherches m’ont amené sur le popover que vous pouvez voir dans la première fonction : image.modalPresentationStyle = UIModalPresentationStyle.popover
mais sans résultat. J’ai appris ensuite que ça concernait que les iPad. Est ce toujours le cas ?

Sinon pour illustrer mon propos voici une p’tite vidéo du bug ainsi que le code

Voici les fonctions :

@objc func openPhotoLibrary() {
	if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
		image.sourceType = UIImagePickerControllerSourceType.photoLibrary
		image.modalPresentationStyle = UIModalPresentationStyle.popover
		
		present(image, animated: true, completion: nil)
	}
}

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
	let imageViews = [gridSquareView.oneTopLeftImageView, gridSquareView.twoTopRightImageView ,gridSquareView.threeBotLeftImageView, gridSquareView.fourBotRightImageView ]
	let gridSquareButtons = [gridSquareView.oneTopLeftButton, gridSquareView.twoTopRightButton, gridSquareView.threeBotLeftButton, gridSquareView.fourBotRightButton]
	guard let tag = gridSquareView.currentTag else {return}
	guard let myImage = info[UIImagePickerControllerOriginalImage] as? UIImage else {return}
		imageViews[tag]?.image = myImage
		gridSquareButtons[tag]?.isHidden = true
	let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(openPhotoLibrary))
	imageViews[tag]?.addGestureRecognizer(tapGestureRecognizer)
	dismiss(animated: true, completion: nil)
}

Dites moi si ce n’est pas clair
Je souhaitais encore vous remercier pour vos précédentes réponses.

merci pour m’avoir lu

Vincent

Hello,

un petit tour dans la doc et tu verras que UIImagePickerController ne fonctionne qu’en mode portrait :confused:

1 « J'aime »

Merci pour ta réponse :wink: @s0ta

Et j’ai de bonnes nouvelles ! Ça fonctionne ! Je remets la fonction qui a été modifiée. J’espère que cela pourrait servir à d’autres débutants comme moi.

let image = UIImagePickerController() // pas de changement. J’ai juste oubliée de l’indiquer dans le premier message

Dans la première fonction “OpenPhotoLibrary” :

@objc func openPhotoLibrary() {
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
image.sourceType = UIImagePickerControllerSourceType.photoLibrary
image.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext // Sur cette ligne remplacement de .popover par .overCurrentContext

  	present(image, animated: true, completion: nil)
  }

}

Merci à tous

Vincent

2 « J'aime »

Top!
Merci de l’astuce.

1 « J'aime »