当我动画化一个视图的转换,然后在第一个动画完成之前在另一个动画中重置这个变化,一切都很棒(这里用旋转显示)。动画平稳地切换到新目标:

但是,当我用一个比例来做这件事时,动画就显得格外精彩:

这是破译密码:
UIView.animateWithDuration(1) {
self.someView.layer.transform = CATransform3DMakeScale(0.001, 0.001, 1)
}
UIView.animateWithDuration(1,
delay: 0.5,
options: nil,
animations: {
self.someView.layer.transform = CATransform3DIdentity
}, completion: nil
)还有其他人看过这个吗?我做错了什么吗?
编辑:有一个好的解决办法吗?
编辑2:我相信这是一个复制的这个问题,我投票结束。
发布于 2015-04-01 21:50:16
这篇博客文章给出了答案:在iOS 8中,UIView动画是可加性的,这对于规模化动画来说是一个不幸的结果。
基本上,第二个动画和第一个动画一起发生。唯一的解决方案是在启动新动画之前显式删除原始动画:
view.layer.transform = view.layer.presentationLayer().transform
view.layer.removeAllAnimations()发布于 2015-04-01 21:00:06
嗨,我不太清楚你在寻找什么,但是如果你想让视图回到原来的比例,你可以添加.Autoreverse标志。
UIView.animateWithDuration(1, delay: 0, options: .Autoreverse | .Repeat, animations: {
myView.layer.transform = CATransform3DMakeScale(0.001, 0.001, 1)
}, completion: nil)如果您想将动画串在一起,我会在UIView.animateKeyframesWithDuration()中这样做。
UIView.animateKeyframesWithDuration(2, delay: 0.0, options: nil, animations: {
UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.5, animations: {
// Animation 1
})
UIView.addKeyframeWithRelativeStartTime(1, relativeDuration: 0.5, animations: {
// Animation 2
})
}, completion: nil)

https://stackoverflow.com/questions/29396002
复制相似问题