Переходы перестали работать после обновления XCode - PullRequest
3 голосов
/ 04 ноября 2019

Сегодня я обновил Xcode, а затем все мои переходы во всех моих приложениях за последние несколько лет перестали работать. Я протестировал запуск их на новых симуляторах, а также установил на устройства iOS13.2. Однако переходы работают нормально, когда я загружаю любое из своих приложений из App Store. Я попробую новые сборки на тестовом полете в данный момент. Может быть, я что-то не так делал все эти годы?

Код перехода

let details = self.storyboard?.instantiateViewController(withIdentifier: "ViewSettings")
details?.transitioningDelegate = self.slideAnimatorLeft
self.present(details!, animated: true, completion: nil)

Класс перехода

class SlideAnimatorLeft: NSObject, UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegate {

    let duration = 0.9

    func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return self
    }

    func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return self
    }

    func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
        return duration
    }

    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        guard let fromView = transitionContext.view(forKey: UITransitionContextViewKey.from) else {
            return
        }

        guard let toView = transitionContext.view(forKey: UITransitionContextViewKey.to) else {
            return
        }

        let container = transitionContext.containerView

        let screenOffUp = CGAffineTransform(translationX: container.frame.width, y: 0)
        let screenOffDown = CGAffineTransform(translationX: -container.frame.width, y: 0)

        container.addSubview(fromView)
        container.addSubview(toView)

        toView.transform = screenOffUp

        UIView.animate(withDuration: duration, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.8, options: [], animations: {

            fromView.transform = screenOffDown
            fromView.alpha = 1
            toView.transform = CGAffineTransform.identity
            toView.alpha = 1

        }) { (success) in
            transitionContext.completeTransition(success )
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

добавьте в эту строку свой код.

 details?.modalPresentationStyle = .fullScreen 

// полный код

 let details = self.storyboard?.instantiateViewController(withIdentifier: "CollectionViewController")
 details?.transitioningDelegate = self.slideAnimatorLeft
 details?.modalPresentationStyle = .fullScreen
 self.present(details!, animated: true, completion: nil)
0 голосов
/ 04 ноября 2019

Попробуйте изменить modalPresentationStyle на custom следующим образом:

let details = self.storyboard?.instantiateViewController(withIdentifier: "ViewSettings")
details?.modalPresentationStyle = .custom
details?.transitioningDelegate = self.slideAnimatorLeft
self.present(details!, animated: true, completion: nil)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...