sublayerTransform 的动画持续时间被忽略
Animation duration ignored for sublayerTransform
以下结果导致视图在两秒内从 1/2 尺寸放大;
myView.layer.transform = CATransform3DMakeAffineTransform(
CGAffineTransform.identity.scaledBy(x: 0.5, y: 0.5))
UIView.animate(withDuration: 2, animations: {
myView.layer.transform = CATransform3DIdentity
})
然而,以下内容会导致视图立即放大 - 忽略持续时间;
myView.layer.sublayerTransform = CATransform3DMakeAffineTransform(
CGAffineTransform.identity.scaledBy(x: 0.5, y: 0.5))
UIView.animate(withDuration: 2, animations: {
myView.layer.sublayerTransform = CATransform3DIdentity
})
为什么 sublayerTransform
在持续时间内没有动画? CALayer
注意到它是可动画的。
您无法通过 UIView.animate
为 sublayerTransform
设置动画。相反,使用 CABasicAnimation
.
let animation = CABasicAnimation(keyPath: "sublayerTransform")
animation.fromValue = CATransform3DMakeAffineTransform(
CGAffineTransform.identity.scaledBy(x: 0.5, y: 0.5))
animation.duration = 2
myView.layer.add(animation, forKey: "sublayerTransform")
myView.layer.sublayerTransform = CATransform3DIdentity
以下结果导致视图在两秒内从 1/2 尺寸放大;
myView.layer.transform = CATransform3DMakeAffineTransform(
CGAffineTransform.identity.scaledBy(x: 0.5, y: 0.5))
UIView.animate(withDuration: 2, animations: {
myView.layer.transform = CATransform3DIdentity
})
然而,以下内容会导致视图立即放大 - 忽略持续时间;
myView.layer.sublayerTransform = CATransform3DMakeAffineTransform(
CGAffineTransform.identity.scaledBy(x: 0.5, y: 0.5))
UIView.animate(withDuration: 2, animations: {
myView.layer.sublayerTransform = CATransform3DIdentity
})
为什么 sublayerTransform
在持续时间内没有动画? CALayer
注意到它是可动画的。
您无法通过 UIView.animate
为 sublayerTransform
设置动画。相反,使用 CABasicAnimation
.
let animation = CABasicAnimation(keyPath: "sublayerTransform")
animation.fromValue = CATransform3DMakeAffineTransform(
CGAffineTransform.identity.scaledBy(x: 0.5, y: 0.5))
animation.duration = 2
myView.layer.add(animation, forKey: "sublayerTransform")
myView.layer.sublayerTransform = CATransform3DIdentity