IOS SWIFT пользовательский переход к затемнению от ViewController
Я хочу представить свой контроллер представления с пользовательским переходом, поэтому fromViewController
будет затемнено, как если бы вы представляли AlertViewController. Я создал свой менеджер customTransition:
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let container = transitionContext.containerView()
let fromView = transitionContext.viewForKey(UITransitionContextFromViewKey)!
let toView = transitionContext.viewForKey(UITransitionContextToViewKey)!
let fadeRect = CGRectMake(0, 0, fromView.frame.size.width, fromView.frame.size.height)
let fadeView = UIView(frame: fadeRect)
if (self.presenting == true){
fadeView.backgroundColor = UIColor.blackColor()
fadeView.alpha = 0
fromView.addSubview(fadeView)
container.insertSubview(fadeView, aboveSubview: fromView)
} else {
// adding subviews to container
}
let duration = self.transitionDuration(transitionContext)
UIView.animateWithDuration(duration, animations: { () -> Void in
if (self.presenting == true){
fadeView.alpha = 0.5
} else {
}
}) { (Bool) -> Void in
if self.presenting{
container.addSubview(toView)
}
transitionContext.completeTransition(true)
}
}
}
Я назначаю моего менеджера по переходу на toViewController
как это видно ниже:
var purchaseSpecialItemsViewController = self.storyboard?.instantiateViewControllerWithIdentifier("specialItemPurchaseVC") as! BRSpecialItemPurchaseViewController
purchaseSpecialItemsViewController.transitioningDelegate = self.fadedTransitionManager
self.presentViewController(purchaseSpecialItemsViewController, animated: true, completion: nil)
Контроллер представления, который я собираюсь отобразить, находится в раскадровке с фиксированным размером. У него четкий фон, и я добавил туда табличное представление, которое я хочу видеть в центре экрана.
TableView отображается без проблем, но я не вижу fromViewController вообще. Это просто черный цвет, хотя я установил альфа черного фона на 0, который позже анимируется на 0,5.
Я представляю контроллер представления модально, это вызывает проблему? Должен ли я использовать вместо этого операции push и pop?
1 ответ
Как описано здесь: http://mathewsanders.com/custom-menu-transitions-in-swift/
Мне нужно было добавить модальный стиль презентации следующим образом:
purchaseSpecialItemsViewController.modalPresentationStyle = UIModalPresentationStyle.OverFullScreen
и вместо того, чтобы получать ViewControllersViews, используйте
let screens: (from: UIViewController, to: UIViewController) = (transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!, transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!)
для доступа к ViewControllers.