Я отслеживаю этот учебник по внедрению пользовательских переходов контроллера видимости в iOS 8 с UIPresentationController
, и до сих пор все это имеет смысл, но я могу" t, похоже, что мой контроллер просмотра имеет нужный размер.
В этом учебнике у них есть следующий код:
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()
}
}
Я все понимаю, кроме frameOfPresentedViewInContainerView
. Это возвращает размер , но, если я удалю presentedView().frame = frameOfPresentedViewInContainerView()
в containerViewWillLayoutSubviews
, это не сработает. Почему у меня должна быть эта линия? Вы могли бы подумать, что самой функции будет достаточно, иначе я бы просто реализовал случайный размер в методе containerViewWillLayoutSubviews
.