首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Koloda -动画洗牌对负载的影响

Koloda -动画洗牌对负载的影响
EN

Stack Overflow用户
提问于 2017-06-22 17:36:11
回答 1查看 942关注 0票数 0

我使用柯罗达来呈现一副可以刷过的扑克牌。我把这部分做得很好。

当我最初加载这副牌时,我希望每一张视图/卡片分别飞进来,然后显示为堆叠。我将此称为洗牌或deal效应(就像你打扑克牌时一样)。据我所知,似乎Koloda不允许这样做。我看到的动画是用来显示整个视图/帧堆栈后,它们已经堆叠起来。所以在我的例子中,这意味着整个甲板。我也没有看到一种方法来添加视图/卡片1到1,而不会导致完全重新加载。

如果我有3张卡片的话,下面是我想要的效果

卡1(甲板底部以动画形式从左边飞进来)

.2二次等待

第二张牌(第二张从甲板底部/中间牌飞进来)

.2二次等待

牌3(甲板顶部飞入)

按照正常的Koloda视图前进。

我尝试过将动画添加到我的UIViews中,这些动画被添加为contentViews,但看起来不太正确。我目前的猜测是使用animateAppearanceWithCompletion的自定义动画,但我没有多少运气。还有一个可能有效的frameForCard方法吗?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-22 19:30:15

我子类化了KolodaViewAnimator并重写了初始加载动画。

代码语言:javascript
复制
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+,所以我可以在自定义视图的init /9+设置阶段使用转换。从屏幕开始。

代码语言:javascript
复制
self.mySubView?.transform = CGAffineTransform(translationX: self.frame.width * -2, y: 0)

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

代码语言:javascript
复制
    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

        }

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44706015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档