Ich habe this tutorial bei der Implementierung von benutzerdefinierten Ansicht Controller-Übergänge in iOS 8 mit UIPresentationController
verfolgt, und bis jetzt macht alles Sinn, aber ich kann nicht scheinen, meine View-Controller die richtige Größe zu bekommen.Warum wird meine View-Controller-Größe nicht mit frameOfPresentedViewInContainerView definiert?
In diesem Tutorial, sie habe den folgenden Code:
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()
}
}
ich alles verstehen, mit Ausnahme von frameOfPresentedViewInContainerView
. Das gibt eine Größe zurück, aber, wenn ich presentedView().frame = frameOfPresentedViewInContainerView()
in containerViewWillLayoutSubviews
entferne, funktioniert es nicht. Warum muss ich diese Zeile haben? Sie würden denken, die Funktion selbst wäre ausreichend, sonst würde ich einfach eine zufällige Größe in der containerViewWillLayoutSubviews
Methode implementieren.