2016-04-07 7 views
1

変換をアニメートしたいCALayerサークルがあります。私はそれを0から始めてゆっくりと元のサイズに大きくしたい。ここに私が持っているものがあります:Swift:Animate CALayer Transform

expandingCircleLayer = CAShapeLayer() 
let radius: CGFloat = (self.view?.bounds.width)! * 0.10 
expandingCircleLayer!.path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: 2.0 * radius, height: 2.0 * radius) , cornerRadius: radius).CGPath 
expandingCircleLayer!.fillColor = UIColor.redColor().CGColor 

アニメーションが完了したら、私はまた、コードのブロックを実行したいと思います。私はこれがSpriteNodeで可能であることを知っていますが、私はCALayerでそれを行う方法があまりよく分かりません。

助けてください!

私は素敵なコードブロックがここで見つける使用して、この円形ノードを行いました
+0

これは、あなたに役立つかもしれません! http://stackoverflow.com/questions/13734984/ios-view-transform-animation 私はちょうどGoogleと少しだけ知っていたでしょう。 – amorbytes

答えて

1

Circular progress timer/bar in iOS using SpriteKit

クラスの構造は非常に単純です:

import SpriteKit 

class CircularProgressNode : SKShapeNode 
{ 
    private var radius: CGFloat! 
    private var startAngle: CGFloat! 

    init(radius: CGFloat, color: SKColor, width: CGFloat, startAngle: CGFloat = CGFloat(M_PI_2)) { 
     super.init() 

     self.radius = radius 
     self.strokeColor = color 
     self.lineWidth = width 
     self.startAngle = startAngle 

     self.updateProgress(0.0) 
    } 

    required init(coder aDecoder: NSCoder) { 
     fatalError(“init(coder:) has not been implemented”) 
    } 

    func updateProgress(percentageCompleted: CGFloat) { 
     let progress = percentageCompleted <= 0.0 ? 1.0 : (percentageCompleted >= 1.0 ? 0.0 : 1.0 - percentageCompleted) 
     let endAngle = self.startAngle + progress * CGFloat(2.0 * M_PI) 

     self.path = UIBezierPath(arcCenter: CGPointZero, radius: self.radius, startAngle: self.startAngle, endAngle: endAngle, clockwise: true).CGPath 
    } 
} 
+0

円進行状況バーを表示しようとしていないので、私はCAShapeLayerの変換をアニメーション化したいだけです。これはUIViewの場合と同様です: UIView.animateWithDuration(0.5){ view?.transform = CGAffineTransformMakeScale(1.0,1.0) } – OriginalAlchemist

+0

スプライトノード(スプライトキット)で可能かどうか質問してください。 SKShapeNodeはCAShapeLayerの対応物です。 –

+0

ああ、混乱のために申し訳ありません。私はSpriteNodeで可能であることを知っているが、CAShapeLayerでそれを行う方法を知りたいと言った。 – OriginalAlchemist