【发布时间】:2015-08-13 08:23:09
【问题描述】:
我有 5 个连续的 UILabel 像这样:
它们是使用与标签 1 相同的框架创建的,然后使用 CGAffineTransform 属性移动。所以CGAffineTransformIdentity 会将它们全部带回标签1 的顶部。
我希望,当我按下按钮时,以相同的速度将它们全部移回标签1,一旦它们到达目的地,就将它们从超级视图中删除。
到目前为止,我已经完成了以下操作,但它不起作用:
var reversedLabels = getLabels().reverse()
let duration: NSTimeInterval = 5
UIView.animateWithDuration(duration, animations: {
for (index, label) in enumerate(reversedLabels) {
let relativeDuration: NSTimeInterval = duration * Double(index) / Double(reversedLabels.count)
UIView.animateWithDuration(relativeDuration, animations: {
label.transform = CGAffineTransformIdentity
}, completion: { finished in
label.hidden = true
})
}
}, completion: { finished in
for (index, label) in enumerate(reversedLabels) {
label.removeFromSuperview()
}
})
主动画的完成在嵌套动画的完成之前被调用。那我想这不是办法。
你会怎么做? (为什么最后没有调用“最终”完成?)
【问题讨论】:
标签: ios swift core-animation uiviewanimation