2017-02-28 16 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) 

変更1から0

(結果はまだ正確には、あなたが望むアニメーションではないかもしれないが、少なくとも、あなたが何かを見る必要があります - 。もちろん、限り(0,600)が完全に画面外ではないとして)

関連する問題