Переход справа налево без Pu sh или представления ViewController - PullRequest
0 голосов
/ 16 января 2020

Есть ли возможность выполнить переход из Right To Left Без push or Persenting ViewController. Следующий код отлично работает с анимацией, но если я использую этот класс, мой TabBar будет скрыт. Если я удаляю код внутри Perform() TabBar, это показ, но анимация останавливается. Используя MDCBottomNavigationBar

class SegueFromRight: UIStoryboardSegue {
    override func perform() {
        let src = self.source
        let dst = self.destination
        src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)

        dst.view.transform = CGAffineTransform(translationX: src.view.frame.size.width, y: 0)

        UIView.animate(withDuration: 0.25,delay: 0.0,options: UIView.AnimationOptions.curveEaseInOut,animations: {
            dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
        },completion: { finished in
            src.navigationController?.pushViewController(dst, animated: false)
        }
        )
    }
}

, есть ли другой способ выполнить переход с анимацией, не скрывая TabBar?

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Наконец я нашел ответ. Просто сняв строку Push ViewController

class SegueFromRight: UIStoryboardSegue {
    override func perform() {
        let src = self.source
        let dst = self.destination
        src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)

        dst.view.transform = CGAffineTransform(translationX: src.view.frame.size.width, y: 0)

        UIView.animate(withDuration: 0.25,delay: 0.0,options: UIView.AnimationOptions.curveEaseInOut,animations: {
            dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
        },completion: { finished in
            //Remove Following line if you want to segue modally  
            //src.navigationController?.pushViewController(dst, animated: false)
        }
        )
    }
}
0 голосов
/ 16 января 2020

Попробуйте это

private func setupAlwaysVisibleView() {
        guard let tabBarController = self.tabBarController else { return }

        tabBarController.view.insertSubview(alwaysVisibleView, belowSubview: tabBarController.tabBar)
    }
...