无法为阵列中的前3个视图控制器查看.transitionFlipFromRight的动画

Zac*_*iro 5 uiview uiviewanimationtransition ios swift

我有一个类似Tinder界面的应用程序,用户可以翻转汽车

在我ViewController.swift,我有

private var currentCardsOnScreen: [CardViewController] = []

当我将CardViewControllers放入堆栈时,此数组将被填充:

if !currentCardsOnScreen.map({ $0.id }).contains(vc.id) {
    self.currentCardsOnScreen.append(vc)
}
Run Code Online (Sandbox Code Playgroud)

滑动后,项目会被删除:

if let index = currentCardsOnScreen.index(of: currentCard), 
    currentCardsOnScreen.map({ $0.id }).contains(currentCard.id) {
         currentCardsOnScreen.remove(at: index)
 }
Run Code Online (Sandbox Code Playgroud)

当用户选择卡时,我运行:

guard let currentCard = currentCard(index: index) else { return }

currentCard.flipCard()
Run Code Online (Sandbox Code Playgroud)

哪个调用此方法:

func flipCard() {
    guard
        let frontOfCard = frontOfCard,
        let backOfCard = backOfCard
    else { return }

    UIView.animate(withDuration: 0.32, delay: 0, options: .transitionFlipFromRight, animations: {
        if self.frontIsShowing {
            self.view.transform = CGAffineTransform(scaleX: 1, y: 1)

            frontOfCard.alpha = 0
            backOfCard.view.alpha = 1
        } else {
            self.view.transform = CGAffineTransform(scaleX: -1, y: 1)
            frontOfCard.transform = CGAffineTransform(scaleX: -1, y: 1)

            frontOfCard.alpha = 1
            backOfCard.view.alpha = 0
        }

        self.frontIsShowing = !self.frontIsShowing
    }, completion: nil)
Run Code Online (Sandbox Code Playgroud)

堆叠中的卡片数量始终为3.对于前3张卡片,点击卡片会改变卡片的值,frontIsShowing但不会显示卡片的翻转.如果我刷掉前3个,那么之后的任何卡都会按预期运行.动画将显示,一切都会很好.

有什么想法可以在这里发生什么?

编辑:此外,不确定是否相关,但在卡片4进行第一次翻转动画时,我看到alphas过渡通过淡入/淡出而不是卡片翻转.在第二次点击是我看到翻转动画.再次,不确定是否相关,但我想提到.

Zac*_*iro 4

我想到了。我有一个 Alamofire 调用来获取大量阻止主线程动画的数据