2016-04-07 9 views
1

Ich habe einen CALayer-Kreis, den ich gerne transformieren würde. Ich möchte, dass es bei 0 beginnt und dann langsam zu seiner ursprünglichen Größe größer wird. Hier ist, was ich habe:Swift: Animiere CALayer Transformation

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 

Nachdem die Animation abgeschlossen ist, würde ich auch gerne einen Block von Code ausführen. Ich weiß, dass dies mit einem SpriteNode möglich ist, aber ich bin mir nicht sicher, wie ich es mit einem CALayer machen soll.

Bitte Hilfe!

+0

Dies könnte hilfreich für Sie sein! http://stackoverflow.com/questions/13734984/ios-view-transform-animation Ich habe herausgefunden, mit nur google ein bisschen. – amorbytes

Antwort

1

Ich habe tun gerade diesen Kreis Knoten einen schönen Codeblock hier mit: Circular progress timer/bar in iOS using SpriteKit

Die Klassenstruktur ist sehr einfach:

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

Ich versuche nicht, einen kreisförmigen Fortschrittsbalken zu machen, ich möchte nur die Umwandlung eines CAShapeLayers animieren. Ähnlich wie bei einer UIView: UIView.animateWithDuration (0.5) { Ansicht? .transform = CGAffineTransformMakeScale (1.0, 1.0) } – OriginalAlchemist

+0

In Ihrer Frage fragen Sie, ob es mit Spritenode (Spritekit) möglich ist. Der SKShapeNode ist ein CAShapeLayer-Pendant. –

+0

Oh, tut mir leid für die Verwirrung. Ich sagte, dass ich weiß, dass es mit einem SpriteNode möglich ist, aber ich möchte wissen, wie man es mit einem CAShapeLayer macht. – OriginalAlchemist