当我对视图变换进行动画处理时,在第一个动画结束之前重置另一个动画中的变化,一切都很棒(此处显示为旋转)。动画平滑地切换到新目标:
但是当我用刻度来做这件事时,动画就会超越:
这是破解码:
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:我认为这是this question的副本,我正在投票结束。
答案 0 :(得分:1)
This blog post提供了答案:在iOS 8中,UIView动画是附加的,这对于缩放动画有一个不幸的结果。
基本上,第二个动画与一起发生第一个动画。唯一的解决方案是在开始新动画之前显式删除原始动画:
view.layer.transform = view.layer.presentationLayer().transform
view.layer.removeAllAnimations()
答案 1 :(得分:0)
您好我不太确定您要查找的内容,但如果您希望视图返回原始比例,则会添加.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)