2017-02-28 72 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)不關閉屏幕完全,當然)