J'ai un comportement étrange lors de la présentation modale d'UIViewControllers dans iOS 13. Le nouveau style de présentation que j'ai vu sur iOS 13 ressemble à ceci:
Le contrôleur de vue présenté apparaît derrière le contrôleur de vue présenté. Il est également décalé vers le bas pour imiter une "pile"
Pendant ce temps, lorsque je présente des contrôleurs de vue via mon application, j'obtiens toujours cet effet:
Le contrôleur de vue de présentation ne bouge pas du tout lors de la présentation d'un nouveau contrôleur de vue
J'utilise ce code pour présenter ce contrôleur de vue:
let controller = storyboard?.instantiateViewController(withIdentifier: "tutorial") as! TutorialController
controller.modalPresentationStyle = .pageSheet
controller.modalTransitionStyle = .coverVertical
present(controller, animated: true, completion: nil)
Voici ma question: je me demande pourquoi cela se produit et s'il existe un moyen de présenter les contrôleurs de vue dans le style iOS 13 normal (avec le contrôleur de vue de présentation qui recule).
Merci d'avance!
la source
controller.modalTransitionStyle = .coverVertical
et même lecontroller.modalPresentationStyle = .pageSheet
(bien que le style de présentation soit nécessaire si ce code est également exécuté sur un iPad).Réponses:
Il s'avère que le problème était ma hiérarchie de contrôleur de vue. J'ai pu y remédier en faisant du contrôleur de vue de présentation le contrôleur de vue racine de mon application. J'ai d'abord défini le contrôleur d'arrière-plan comme contrôleur de vue racine en appelant
puis en utilisant mon code précédent
J'ai présenté le contrôleur de vue. Merci à tous ceux qui ont essayé d'aider!
la source
Je pense que le problème peut être résolu en utilisant
vc.modalPresentationStyle = .fullScreen
s'il n'y a pas UINavigationController, sinon vous pouvez utiliser ces codes comme suit:car avec iOS 13, c'est une nouvelle fonctionnalité qu'Apple a changé le style de présentation par défaut des contrôleurs de vue en une feuille modale en plein écran dans iOS 12
la source
Par programme:
Du storyboard:
C'est ça. Pas besoin de jouer avec le contrôleur racine ou la fenêtre.
Pour référence, visitez cet article .
la source
Nous pouvons le changer dans la barre d'outils de l'inspecteur. Pour y parvenir: dirigez-vous vers la cinquième section de la barre de contrôle de l'inspecteur, puis changez le champ Présentation en plein écran.
la source
Cela devrait être la seule propriété que vous devez définir
Détaillé dans https://developer.apple.com/videos/play/wwdc2019/224/
la source