2017-02-08 122 views
0

以下結果導致視圖在1/2秒內從1/2大小放大;SublayerTransform忽略的動畫持續時間

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注意到它是Animatable。

回答

2

您不能通過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