2017-10-10 6 views
0

私はCAShapeLayerでCAAnimationを使用して、左から右にストロークさせる行を単純にアニメートします(より複雑なプログラムの単なるカットダウン版です)。私は最初の四半期がほとんど瞬間的であることを示すためにそれを減速させ、残りは正常に動く。CAAnimationでUIViewAnimationCurveオプションを使用する方法

UIViewAnimationCurveオプション(例:.EaseInまたは.Linear)を設定するためにUIView.animateのオプションを使用できることがわかりました。 CAShapeLayerにCAAnimationを埋め込む際にこれらのオプションを設定することは可能ですか?アニメーションを実行するたびにアニメーションを作成する必要がありますか、または「アニメーションを実行する」コマンドがありますか?以下は

私のカットダウンコードです:事前に

// the containing UIView is called mainView 

    mainView.layer.sublayers = nil 

    // create a line using a UIBezierPath 

    let path = UIBezierPath() 
    path.move(to: CGPoint(x: 100, y: 100)) 
    path.addLine(to: CGPoint(x: 300, y: 100)) 

    // create a CAShapeLayer 

    let shapeLayer = CAShapeLayer() 
    shapeLayer.frame = CGRect(x: 0, y: 0, width: 1024, height: 1024) 
    shapeLayer.strokeColor = UIColor.green.cgColor 
    shapeLayer.lineWidth = 100 
    shapeLayer.path = path.cgPath 

    // create the animation 

    mainView.layer.addSublayer(shapeLayer) 
    let animation = CABasicAnimation(keyPath: "LetterStroke") 

    animation.fromValue = 0 
    animation.toValue = 1 
    animation.duration = 10 

    shapeLayer.add(animation, forKey: "animation") 

感謝します。

答えて

0

timingFunctionプロパティはCABasicAnimationです。

animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn) 
+0

これは正解であり、高く評価されています。私は実際に、問題が他のところにあることを発見しました。下に見てきましたが、実際に私の質問に答えました。 –

0

ようthese事前に定義されたタイミング機能は問題がラインアニメーションがで道の四分の一を開始するために登場していることだっ受け取るコンストラクタがあります。私は、コードの問題のある行であることが判明したものを置くことを怠っ私の質問。

shapeLayer.lineCap = kCALineCapRound

これを、100の線幅と合わせ、行は最初から道の約四分の一を開始しました。私はlineWidthを小さくして、うまくいきました。

関連する問題