Я пытаюсь анимировать UICollectionViewController
над оригиналом UIViewController
с оригиналом UIViewController
размытым как фон, однако каждый раз, когда анимация заканчивается, я могу видеть ясно из-за размытого представления о том, что исходный контроллер представления отклонен, что я делаю, чтобы избежать отклонения первого UIViewController
?Как модерировать представление контроллера, не отпуская контроллер родительского/первого представления
код в первом контроллере представления, чтобы представить второе:
let VC = storyboard?.instantiateViewController(withIdentifier: "PopoverCollectionVC") as! PopoverCollectionVC
VC.setDataSource(with: .calcDPSItems)
VC.collectionView?.backgroundColor = UIColor.clear
VC.transitioningDelegate = self
self.present(VC, animated: true, completion: nil)
код в объекте аниматора для пользовательской анимации:
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView
let fromView = transitionContext.view(forKey: .from)!
let toView = transitionContext.view(forKey: .to)!
if presenting {
// configure blur
effectView.frame = fromView.bounds
containerView.addSubview(effectView)
// configure collection view
toView.frame = CGRect(x: 0, y: fromView.frame.height, width: fromView.frame.width, height: fromView.frame.height/2)
containerView.addSubview(toView)
UIView.animateKeyframes(withDuration: duration, delay: 0, options: .calculationModeCubic, animations: {
UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: 0.6) {
toView.center.y = fromView.center.y
}
UIView.addKeyframe(withRelativeStartTime: 0.1, relativeDuration: 1) {
self.effectView.effect = UIBlurEffect(style: .dark)
}
}) { _ in
transitionContext.completeTransition(true)
}
} else {
...
}
попробовать 'VC.modalPresentationStyle = .overCurrentContext 'before' self.present (VC, animated: true, completion: noil)' – Aladin
@Aladin он разбился на строке: let fromView = transitionContext.view (forKey: .from) !, говоря, что значение равно nil –
'// Получите представление из ViewController, потому что является ошибкой в iOS при использовании некоторых значений modalPresentationStyle, которые заставляют viewForKey возвращать нуль для UITransitionContextFromViewKey // www.splinter.com.au/2015/04/17/ios8-view-controller-transitioning-bug/ let fromVC = transitionContext.viewController (forKey: UITransitionContextViewControllerKey.from) let fromView = fromVC? .view' – Aladin