swift 2 animateWithDuration不重复

时间:2016-06-14 04:19:41

标签: ios swift animation animatewithduration

我一直试图让这个动画工作几个小时,但无济于事。这是一个快照。所以我有一个价格标签,显示产品的当前价格,这是在自定义集合视图中。调用collectionView:willDisplayCell后,我会在名为animateDiscountPrice的自定义集合视图单元格上调用以下方法。

我想要实现的动画是将compare_at价格逐个字符添加到当前价格标签的末尾。我尝试设置REPEAT选项以及重复计数,但动画块只被调用一次,然后立即调用完成块。基本上没有动画。

func animateDiscountPrice()
    {
        let priceText = NSMutableAttributedString(attributedString: self.priceLabel.attributedText!)
        let originalPriceText = NSMutableAttributedString(attributedString: self.priceLabel.attributedText!)
        let offset = priceText.length
        dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
            if let compareAtString : String = self.productData["compare_at_price_min"] as? String {
                let compareAtPrice = NSMutableAttributedString(string: "$\(compareAtString)", attributes: myAttribute )
                var i = 0
                let count = compareAtString.characters.count+1
                dispatch_async(dispatch_get_main_queue(), {
                    UIView.animateWithDuration(NSTimeInterval(count), delay:0, options: [.Repeat, .Autoreverse, .AllowUserInteraction, .CurveLinear],
                            animations: {
                                UIView.setAnimationRepeatCount(Float(count))

                                priceText.appendAttributedString(compareAtPrice.attributedSubstringFromRange(NSMakeRange(i, 1)))
                                    priceText.addAttribute(NSForegroundColorAttributeName, value: discountColor, range: NSMakeRange(offset, i+1))
                                    self.priceLabel.attributedText = priceText
                                    i = i + 1
                            },
                            completion: { (finished) in
                                if(finished)
                                {
                                    originalPriceText.appendAttributedString(compareAtPrice)
                                    originalPriceText.addAttribute(NSForegroundColorAttributeName, value: discountColor, range: NSMakeRange(offset, compareAtPrice.length))
                                    //self.priceLabel.attributedText = originalPriceText
                                }
                            }
                    )
                })
            }
        }
    }

在日志行中我可以看到动画只为每个正在显示的单元调用一次,然后调用完成方法。

0 个答案:

没有答案