我正在使用Swift。
我有一个名为fadeButtonsOut的函数,当我的游戏结束时会调用它。我有一个UIButtons(tile)数组,我想fadeOut然后fadeIn。
功能是:
func fadeButtons(){
var tileArrayCopy = tileArray
for index in 0..<tileArrayCopy.count{
UIView.animateWithDuration(1.5,
delay: 0,
options: UIViewAnimationOptions.CurveLinear,
animations: {
tileArrayCopy[index].alpha = 0
}, completion: { (Bool) -> Void in
UIView.animateWithDuration(1.5,
animations: {
tileArrayCopy[index].alpha = 1
}, completion: nil)
})
}
}
问题是fadeOut动画正在覆盖fadeOut动画。基本上fadeOut瞬间发生,然后fadeIn正常动画。我把fadeIn放到了fadeOut的完成中,为什么会这样呢?我希望FadeOut在fadeOut完成后动画然后将fadeIn设置为动画。
答案 0 :(得分:0)
您发布的代码看起来很合理,但它在一组视图(按钮?)中的单个条目上运行
它使用实例变量索引?我假设你有一个循环,反复调用这个方法?
实例变量的处理可能是你的问题。使该函数为索引获取一个int参数,并重写您的动画代码以使用它。然后让你的循环在索引中传递。
func fadeButtonsOut(tileIndex: Int)
{
UIView.animateWithDuration(
1.5,
delay: 0,
options: UIViewAnimationOptions.CurveLinear,
animations:
{
tileArrayCopy[tileIndex].alpha = 0
},
completion:
{
(Bool) -> Void in
UIView.animateWithDuration(1.5,
animations:
{
tileArrayCopy[tileIndex].alpha = 1
},
completion: nil)
})
}
然后像这样称呼它:
for tileIndex in 1..tileArrayCopy.count
{
fadeButtonsOut(tileIndex)
}
顺便说一句,空白是你的朋友。不要将10吨代码塞进一行。它使代码很难阅读。