2017-02-28 91 views
0

我试图通过使用CATransform3DMakeScale来设置CALayer以增加视图控制器底部的宽度。我可以使图层缩放得很好,但是当我尝试通过动画应用转换时,图层不进行任何动画转换。变换不适用于动画

let progressBar1 = CALayer() 

override func viewDidAppear() { 
    progressBar1.bounds = CGRect(x: 0, y: 0, width: 1, height: 5) 
    progressBar1.position = CGPoint(x: 0, y: 600) 
    progressBar1.backgroundColor = UIColor.white.cgColor 
    view.layer.addSublayer(progressBar1) 
    extendBar1() 
} 

func extendBar1(){ 
    let transform1 = CATransform3DMakeScale(30, 1, 0) 
    let anim = CABasicAnimation(keyPath: "transform") 
    anim.isRemovedOnCompletion = false 
    anim.fillMode = kCAFillModeForwards 
    anim.toValue = NSValue(caTransform3D:transform1) 
    anim.duration = 10.00 
    progressBar1.add(anim, forKey: "transform") 
} 

我也试图与CATransaction以下,但我得到了相同的结果

func extendBar3(){ 

    let transform1 = CATransform3DMakeScale(30, 1, 0) 

    CATransaction.begin() 
    CATransaction.setAnimationDuration(7.0) 
    progressBar1.transform = transform1 
    CATransaction.commit() 
} 

回答

0

首席剩下的问题是这一行:

let transform1 = CATransform3DMakeScale(30, 1, 0) 

更改01

(结果可能仍然不是你想要的动画,准确,但至少你应该看到的东西 - 只要(0,600)不关闭屏幕完全,当然)