Я создал пользовательский переход для NavigationController
и использую его в представлении коллекции.Когда я не прокручиваю ячейку, переход работает нормально.Начальная позиция равна рамке ячейки.Но если я прокручиваю вниз, начальная позиция не меняется.Осталось прежним.
Как я могу это исправить?
Я думаю, что проблема здесь:
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
if popStyle {
animatePop(using: transitionContext)
return
}
let startView = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from)!
let endView = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to)!
endView.view.alpha = 0.0
endView.view.layer.cornerRadius = animatedView.layer.cornerRadius
transitionContext.containerView.insertSubview(endView.view, aboveSubview: startView.view)
//MARK - Scale transform for presented view
let xScaleFactor = animatedView.frame.width / transitionContext.containerView.frame.width
let yScaleFactor = animatedView.frame.height / transitionContext.containerView.frame.height
let scaleTransform = CGAffineTransform(scaleX: xScaleFactor, y: yScaleFactor)
if presenting {
endView.view.transform = scaleTransform
endView.view.center = CGPoint(
x: animatedView.frame.midX,
y: animatedView.frame.midY)
endView.view.clipsToBounds = true
}
UIView.animate(
withDuration: transitionDuration(using: transitionContext), animations: {
endView.view.alpha = 1.0
endView.view.frame = CGRect(x: 100, y: 0, width: self.animatedView.frame.width, height: self.animatedView.frame.height)
endView.view.transform = self.presenting ? CGAffineTransform.identity : scaleTransform
endView.view.center = CGPoint(x: transitionContext.containerView.frame.midX, y: transitionContext.containerView.frame.midY)
}, completion: {_ in
transitionContext.completeTransition(true)
self.presenting = false
endView.view.layer.cornerRadius = 0.0
})
}