Пользовательский контроллер навигации не может запомнить положение ячейки Swift 4 - PullRequest
0 голосов
/ 21 февраля 2019

Я создал пользовательский переход для 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
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...