无法看到数组中前 3 个视图控制器的 .transitionFlipFromRight 动画

Unable to see animation for .transitionFlipFromRight for first 3 view controllers in array

我有一个界面类似 Tinder 的应用程序,用户可以在其中浏览汽车

在我的ViewController.swift中,我有

private var currentCardsOnScreen: [CardViewController] = []

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

if !currentCardsOnScreen.map({ [=10=].id }).contains(vc.id) {
    self.currentCardsOnScreen.append(vc)
}

滑动后项目会被删除:

if let index = currentCardsOnScreen.index(of: currentCard), 
    currentCardsOnScreen.map({ [=11=].id }).contains(currentCard.id) {
         currentCardsOnScreen.remove(at: index)
 }

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

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

currentCard.flipCard()

调用此方法的方法:

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)

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

知道这里会发生什么吗?

编辑: 另外,不确定是否相关,但是在卡片 4 上制作第一个翻转动画时,我看到 alphas 过渡通过淡入淡出 in/fade但不是翻牌。第二次点击是我看到翻转动画的时候。同样,不确定是否相关但我想我会提到。

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

在主线程上调用 flipCard() 并在后台线程上获取数据

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
     // fetch data in background thread 
});