2017-06-14 2 views
0

J'essaye d'ajouter une transition personnalisée à un UIViewController qui a un xib. J'ai essayé quelques approches, mais ils ont tous le même problème, la vue affiche pour la mauvaise taille de l'écran.L'ajout d'une transition personnalisée provoque le chargement de xib pour la mauvaise taille d'écran

Mon exemple actuel est basé sur le tutoriel suivant: Custom UIViewController transition in iOS with Swift

J'ai fait aucun changement à la TransitionDelegate ou Animateurs.

Voilà la vue dans la XIB et dans le simulateur:

UIViewController Loads For Wrong Size

Le UIView blanc est réglé sur le centre, la largeur de 80% avec un rapport 1: 1.

Mon UIViewController est chargé à l'aide de ce qui suit:

let thirdViewController = ThirdViewController() 
    thirdViewController.transitioningDelegate = viewTransitionDelegate 
    thirdViewController.modalPresentationStyle = .custom 
    navigationController?.present(thirdViewController, animated: true, completion: nil) 

Si je commente à régler le délégué de la vue se charge 100% parfaitement:

UIViewController Loads Correctly Without Transition Delegate

Enfin, j'ai une autre UIViewController qui n'a pas de xib et les contraintes sont définies par programme. Ce point de vue est chargé avec la même transition et charges parfaitement:

UIViewController Loads Correctly Without XIB

Que dois-je changer pour obtenir ce travail avec XIBs?

Répondre

1

J'ai passé des siècles à chercher une réponse à cette question et je l'ai trouvée dans one of the related questions dans la barre latérale.

Tout ce que je devais faire était d'ajouter ce qui suit à mon animateur:

toViewController.view.frame = fromViewController.view.frame 

J'espère que cela aide quelqu'un un jour.