gpt4 book ai didi

ios - Koloda - 负载上的动画随机播放效果

转载 作者:行者123 更新时间:2023-11-30 12:21:52 24 4
gpt4 key购买 nike

我正在使用Koloda展示一副可以滑动的扑克牌。我这部分工作得很好。

当我最初加载这副卡片时,我希望每个 View /卡片单独飞入,然后显示为堆叠的。我将其称为洗牌或发牌效果(就像发牌时一样)。据我所知,Koloda 似乎不允许这样做。我看到的动画用于显示整个 View /帧堆叠后的堆栈。所以在我的例子中,这意味着整个牌组。我也没有找到一种方法可以在不导致完全重新加载的情况下一一添加 View /卡片。

如果我有 3 张卡,我希望它的工作方式如下

卡片 1(牌组底部以动画方式从左侧飞入)

.2秒等待

卡 2(牌库底部第二张/中间的卡飞入)

.2秒等待

卡牌 3(牌堆顶部飞入)

按照正常的 Koloda View 进行操作。

我尝试将动画添加到作为 contentView 添加的 UIView,但它看起来不正确。我目前的猜测是使用 animateAppearanceWithCompletion 的自定义动画,但我运气不佳。还有一个可能有效的 frameForCard 方法?

如果有帮助的话,我正在项目中使用 Snapkit。我的目标是 iOS 9+

最佳答案

我继承了 KolodaViewAnimator 并覆盖了初始加载动画

override func animateAppearanceWithCompletion(_ completion: KolodaViewAnimator.AnimationCompletionBlock) {

self.koloda?.alpha = 1.0

// custom extension method to return my CardView
let cards = self.koloda!.cards().reversed()
for (index, card) in cards.enumerated() {
let delay = Double(index) * 0.2
card.display(delay: delay)
}

completion?(true)
}

由于我的目标是 iOS 9+,因此我可以在自定义 View 的初始化/设置阶段使用转换。从屏幕开始。

self.mySubView?.transform = CGAffineTransform(translationX: self.frame.width * -2, y: 0)

调用display()从子类ViewAnimator触发动画

    func display(delay: TimeInterval) {

UIView.animate(withDuration: 0.2, delay: delay, options: [], animations: {
// could be a subview
self.mySubView.transform = CGAffineTransform(translationX: 0, y: 0)

}) { (_) in

}

}

关于ios - Koloda - 负载上的动画随机播放效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44706015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com