动画结束后视图未更新

时间:2018-02-10 10:20:00

标签: ios swift uibezierpath cashapelayer

简而言之,我想为svg图像设置动画(用动画绘制svg),在完成动画后,将另一个svg图像设置为我的视图背景,但遗憾的是UI不会更新,背景也不会改变。 使用此代码绘制零件没有问题:

@override func viewDidLoad() {
    animateLogo() 
}

func animateLogo()
    let bezierPath = UIBezierPath(svgPath : mySvgPath)

    let shapeLayer= CAShapeLayer()
    shapeLayer.path = bezierPath.CGPath
    shapeLayer.strokeColor = UIColor.white.cgColor
    shapeLayer.fillColor = UIColor.red.cgColor
    view.layer.addSublayer(shapeLayer)

    let animation = CABasicAnimation(keyPath: “strokeEnd”)
    animation.fromValue = 0.0
    animation.toValue = 1.0
    animation.duration = 3
    animation.delegate = self
    shapeLayer.addAnimation(animation, forKey: “drawLineAnimation”)
}

3秒后触发animationDidStop()方法,但经过长时间延迟背景会发生变化。

func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {
print(#function)
     let bezierPath = UIBezierPath(svgPath : anotherSvgPath)

     let shapeLayer= CAShapeLayer()
     shapeLayer.path = bezierPath.CGPath
     shapeLayer.strokeColor = UIColor.white.cgColor
     shapeLayer.fillColor = UIColor.red.cgColor
     view.layer.addSublayer(shapeLayer)

}

为什么UI不会立即更新?我做错了什么?

我也打电话给setNeedsDisplay刷新用户界面但没有任何事情发生。

0 个答案:

没有答案