Ho seguito this tutorial sull'implementazione di transizioni personalizzate del controller di visualizzazione in iOS 8 con UIPresentationController
, e finora tutto ha senso, ma non riesco a ottenere il mio controller di visualizzazione della giusta dimensione.Perché la definizione della mia dimensione del controller di visualizzazione con frameOfPresentedViewInContainerView non la rende tale dimensione?
In questo tutorial, essi hanno il seguente codice:
class OverlayPresentationController: UIPresentationController {
let dimmingView = UIView()
override init(presentedViewController: UIViewController!, presentingViewController: UIViewController!) {
super.init(presentedViewController: presentedViewController, presentingViewController: presentingViewController)
dimmingView.backgroundColor = UIColor(white: 0.0, alpha: 0.5)
}
override func presentationTransitionWillBegin() {
dimmingView.frame = containerView.bounds
dimmingView.alpha = 0.0
containerView.insertSubview(dimmingView, atIndex: 0)
presentedViewController.transitionCoordinator()?.animateAlongsideTransition({
context in
self.dimmingView.alpha = 1.0
}, completion: nil)
}
override func dismissalTransitionWillBegin() {
presentedViewController.transitionCoordinator()?.animateAlongsideTransition({
context in
self.dimmingView.alpha = 0.0
}, completion: {
context in
self.dimmingView.removeFromSuperview()
})
}
override func frameOfPresentedViewInContainerView() -> CGRect {
return containerView.bounds.rectByInsetting(dx: 30, dy: 30)
}
override func containerViewWillLayoutSubviews() {
dimmingView.frame = containerView.bounds
presentedView().frame = frameOfPresentedViewInContainerView()
}
}
ho capito tutto, tranne che per frameOfPresentedViewInContainerView
. Che restituisce una dimensione, ma, se rimuovo presentedView().frame = frameOfPresentedViewInContainerView()
in containerViewWillLayoutSubviews
non funziona. Perché devo avere quella linea? Si potrebbe pensare che la funzione stessa sarebbe sufficiente, altrimenti implementerei solo una dimensione casuale nel metodo containerViewWillLayoutSubviews
.