Две анимации, перебивающие друг друга - PullRequest
0 голосов
/ 20 февраля 2020

В настоящее время сталкиваюсь с проблемой пользовательского интерфейса, где у меня есть ViewController (2), встроенный в другой ViewController (1). На ViewController (1) я нажимаю на кнопку, которая появляется и анимирует UIView, однако есть другая кнопка, которая при нажатии скользит и анимирует SideMenu.

Проблема, с которой я сталкиваюсь, заключается в том, что когда вы нажимаете кнопку анимации UIView и сразу же нажимаете кнопку SideMenu, UIView анимирует, но на полпути в анимацию SideMenu, оно отключается и выдает ошибку, когда я нажимаю на SideMenu Кнопка во второй раз. Похоже, что анимация UIView прерывает анимацию SideMenu.

Эта проблема прерывания анимации SideMenu из-за одновременного воспроизведения 2 анимаций?

Вот как я встраиваю ViewController (2) на ViewController (1).

        self.addChild(sideMenuViewController)
        view.addSubview(sideMenuViewController.view)
        sideMenuViewController.view.anchorwithConstant(top: view.topAnchor, bottom: view.bottomAnchor, leading: view.leadingAnchor, trailing: nil, paddingTop: 0, paddingBottom: 0, paddingLeading: -(view.bounds.width), paddingTrailing: 0, width: view.bounds.width, height: 0)
        sideMenuViewController.didMove(toParent: self)

Вот как я анимирую UIView.

func animateShowDetailView() {
    DispatchQueue.main.async {
        UIView.animate(withDuration: 0.1, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 4, options: .curveEaseIn, animations: {
            self.detailView.isHidden = false
            self.detailView.alpha = 1.0
        }) { (completed) in
            self.mapControllerButtonsHandler(isEnabled: true)
        }
    }
}

Вот как я анимирую ViewController (2) aka SideMenu.

func handleSideMenuToggle(menuOption: MenuOption?) {
    if expansionState == .NotExpanded {
        animateInputView(targetPosition: view.frame.origin.x + view.frame.width) { (_) in
            self.expansionState = .Expanded
        }
    }
}
...