使用循环向多个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() }
这有帮助吗? 有点困惑你的意图,但我认为这回答你的问题