淡出/淡入 UiView 动画
Posted
技术标签:
【中文标题】淡出/淡入 UiView 动画【英文标题】:Fade Out/In UiView Animation 【发布时间】:2015-03-27 15:43:32 【问题描述】:我正在使用 Swift。
我有一个名为fadeButtonsOut 的函数,它会在我的游戏结束时被调用。我有一组 UIButtons(图块),我想先淡出然后再淡入。
函数是:
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 动画被fadeIn 动画覆盖。基本上淡出立即发生然后淡入正常动画。我把fadeIn放在fadeOut的完成中,为什么会这样?我希望 FadeOut 进行动画处理,然后在 fadeOut 完成后让 fadeIn 进行动画处理。
【问题讨论】:
【参考方案1】:您发布的代码看起来很合理,但它是在一组视图(按钮?)中的单个条目上运行的
它使用实例变量索引?我假设您有一个循环重复调用此方法?
实例变量的处理可能是你的问题。使函数采用 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 吨代码塞进一行。它使代码非常难以阅读。
【讨论】:
我已经更新了问题,以提供fadeButtonsOut 函数中的所有代码。能否请您再看看它可能出了什么问题? 您需要展示变量索引是如何定义/更改的,以及调用您的方法的代码。以上是关于淡出/淡入 UiView 动画的主要内容,如果未能解决你的问题,请参考以下文章