变换不适用于动画

时间:2017-02-28 01:25:31

标签: ios swift3 calayer catransform3d

我正在尝试使用CALayer设置CATransform3DMakeScale以增加我的viewcontroller底部的宽度。我可以将图层缩放得很好,但是当我尝试通过动画应用变换时,图层会在没有任何动画的情况下进行变换。

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()
}

1 个答案:

答案 0 :(得分:0)

剩下的主要问题是这一行:

    let transform1 = CATransform3DMakeScale(30, 1, 0)

0更改为1

(结果可能仍然不是你想要的动画,确切地说,但至少你应该看到一些东西 - 只要(0,600)完全不在屏幕之外,当然。)