使用循环向多个UIImageView添加属性

我有8个UImageView ,我正在添加animation。 我知道我可以做animation八次,但我可以使用一个循环,也许插值 – 它?

这是我的animation代码:

 override func viewDidLoad() { super.viewDidLoad() self.dieImage0.animationImages = [ UIImage(named: "dicey-die1")!, UIImage(named: "dicey-die2")!, UIImage(named: "dicey-die3")!, UIImage(named: "dicey-die4")!, UIImage(named: "dicey-die5")!, UIImage(named: "dicey-die6")!, UIImage(named: "dicey-die1")!, UIImage(named: "dicey-die2")!, UIImage(named: "dicey-die3")!, UIImage(named: "dicey-die4")!, UIImage(named: "dicey-die5")!, UIImage(named: "dicey-die6")!, UIImage(named: "dicey-die1")!, UIImage(named: "dicey-die2")!, UIImage(named: "dicey-die3")!, UIImage(named: "dicey-die4")!, UIImage(named: "dicey-die5")!, UIImage(named: "dicey-die6")!, UIImage(named: "dicey-die1")!, UIImage(named: "dicey-die2")!, UIImage(named: "dicey-die3")!, UIImage(named: "dicey-die4")!, UIImage(named: "dicey-die5")!, UIImage(named: "dicey-die6")! ] self.dieImage0.animationRepeatCount = 1 self.dieImage0.animationDuration = 1.0 } 

而对于开始animation:

 override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) { self.dieImage0.startAnimating() /* <======== */ dieImage0.image = randomImages.randomDice(); dieImage1.image = randomImages.randomDice(); dieImage2.image = randomImages.randomDice(); dieImage3.image = randomImages.randomDice(); dieImage4.image = randomImages.randomDice(); dieImage5.image = randomImages.randomDice(); dieImage6.image = randomImages.randomDice(); dieImage7.image = randomImages.randomDice(); println("Motion Ended") } 

我想animation每个dieImage

编辑

我有几个UIImageView@IBOutlet s,我想animation。

  @IBOutlet weak var dieImage0: UIImageView! @IBOutlet weak var dieImage1: UIImageView! @IBOutlet weak var dieImage2: UIImageView! @IBOutlet weak var dieImage3: UIImageView! @IBOutlet weak var dieImage4: UIImageView! @IBOutlet weak var dieImage5: UIImageView! @IBOutlet weak var dieImage6: UIImageView! @IBOutlet weak var dieImage7: UIImageView! 

我如何通过它们循环而不是为每个animation制作一个单独的animation,我已经有一个animation设置; 往上看。

更新:

除了两个骰子已经反叛之外,一切都像通缉那样工作。 第一个( dieImage0 )始终落在第一个,第二个( dieImage5 )根本不会做任何事情!

更新2:

这是我用于animation的代码:

 let dieImages = [dieImage0, dieImage1, dieImage2, dieImage3, dieImage4, dieImage5, dieImage6, dieImage7] for die in dieImages { die.animationImages = [ UIImage(named: "dicey-die2")!, UIImage(named: "dicey-die6")!, UIImage(named: "dicey-die1")!, UIImage(named: "dicey-die4")!, UIImage(named: "dicey-die3")!, UIImage(named: "dicey-die5")!, UIImage(named: "dicey-die3")!, UIImage(named: "dicey-die1")!, UIImage(named: "dicey-die6")!, UIImage(named: "dicey-die3")!, UIImage(named: "dicey-die5")!, UIImage(named: "dicey-die2")!, UIImage(named: "dicey-die4")! ] die.animationRepeatCount = 1 die.animationDuration = 1.0 } 

一切正常!

要创buildanimationImages ,我会这样做:

 dieImage0.animationImages = (0..<4).reduce([UIImage]()) { images, _ in return images + (1..<7).map { UIImage(named: "dicey-die\($0)")! } } 

它看起来像animationImages由24 UIImages – 4套6图像,其中图像的名称是"dicey-dieN" ,( N由范围(1..<7)的数字replace(1..<7)

您可以像这样创build一个包含六个图像的单个数组:

 let images = (1..<7).map { UIImage(named: "dicey-die\($0)")! } 

你想这样做4次,并将所有的数组加在一起。 通过调用(0..<4).reduce([UIImage]()) { ... }

结果将是24个图像的单个数组。

然后,像@Chris Slowikbuild议的那样,创build一个dieImages数组,然后遍历它们来分配随机图像:

 let dieImages = [dieImage0, dieImage1, dieImage2, dieImage3, dieImage4, dieImage5, dieImage6, dieImage7] for dieImage in dieImages { dieImage.image = randomImages.randomDice() dieImage.startAnimating() } 

你的整个motionEnded方法应该看起来像这样:

 override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) { let dieImages = [dieImage0, dieImage1, dieImage2, dieImage3, dieImage4, dieImage5, dieImage6, dieImage7] for dieImage in dieImages { dieImage.image = randomImages.randomDice() dieImage.startAnimating() } } 

我认为你遇到了dieImage0问题,因为你在开始animation之前给它分配一个随机图像。 先分配图像,然后开始animation。

是的,将图像放在一个数组中,并通过数组循环。

 for var i = 0; i < dieImages.count; i++ { dieImages[i].startAnimating() } 

这有帮助吗? 有点困惑你的意图,但我认为这回答你的问题