两个动画相互干扰

时间:2020-02-20 06:21:36

标签: swift animation uiview uiviewcontroller

当前遇到一个UI问题,其中我将ViewController(2)嵌入到另一个ViewController(1)中。在ViewController(1)上,我点击一个按钮,该按钮弹出并为UIView设置动画,但是还有另一个按钮,当您点击该按钮时,它会滑动并为SideMenu设置动画。

我面临的问题是,当您点击UIView动画按钮并立即点击SideMenu按钮时,UIView会设置动画,但进入SideMenu动画的一半,当我第二次点击SideMenu按钮时,它将被截断并产生错误时间。看来UIView动画正在中断SideMenu动画。

此问题是否由于一次播放2个动画而中断了SideMenu动画?

这就是我将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
        }
    }
}

0 个答案:

没有答案