Nel caso qualcuno si imbattesse in questo più tardi, ecco come lo risolvo.
Sottoclasse UIPresentationController e restituisce il frame in frameOfPresentedViewInContainerView. Inseriscilo nel transitioningDelegate che crei per ViewController presentato.
Oppure, è possibile impostare il frame finale per PresentationView in AnimateTransition :, che appartiene all'oggetto animatore creato per transitioningDelegate. Tuttavia, questo è il vecchio modo di iOS 7 per farlo. Dal momento che Apple presenta UIPresentationController, qualsiasi modifica di dimensione/cornice dovrebbe essere fatta lì, che è il metodo precedente che ho menzionato.
Ecco alcune informazioni aggiuntive che potrebbero non essere direttamente correlate alla risoluzione del problema.
Per quelli di voi che non hanno mai messo le mani sulla api di transizione del controller di visualizzazione apple, proprio come me, ecco i passaggi.
Crea YourTransitioningDelegate, che conforma UIViewControllerTransitioningDelegate. Qui, in generale, è necessario impostare tre elementi, PresentationController, PresentedAnimationController, RespintoAnimationController.
Crea YourTransitionAnimator, che conforma UIViewControllerAnimatedTransitioning. Qui, due funzioni devono essere sovrascritte, transitionDuration e animateTransition (qui è dove si svolge tutta l'animazione, aggiungendo/rimuovendo e animando la PresentationView. Chiamate completeTransition su transitionContext per terminare l'animazione).
Sottoclasse UIPresentationController. Dipende da ogni singola esigenza, puoi fare un sacco di cose qui. Ho appena aggiunto un dimmingView e modificato il frame di PresentationViewontroller.
Infine, agganciare le cose prima di presentare il controller di visualizzazione, che sta modificando il modalPresentationStyle per essere personalizzato e impostare il delegato di transizione.
cose che ho trovato veramente utile, due 2014 video WWDC ("Visualizza controllori progressi" e "Uno sguardo dentro i controller di presentazione") e il progetto di esempio di Apple (LookInside-photoEditingApp).
è l'unico modo per fare questo compatibile con iOS 7 e iOS 8 per aggiungere due metodi completamente separati di presentazione di una vista (con codice corrispondente), a seconda che si tratti di iOS 8 o meno? –
Sì, UIPresentationController è solo iOS 8. –