2016-06-03 18 views
4

Das ist meine Animation Methode (PreloaderView.swift)Animationen arbeiten nicht in ios Spielplatz

public func performAction(action: PreloaderAction) 
{ 
    let highOpacity = CABasicAnimation.init(keyPath: "opacity") 
    let middleOpacity = CABasicAnimation.init(keyPath: "opacity") 
    let lowOpacity = CABasicAnimation.init(keyPath: "opacity") 

    if action == .PreloaderActionNone { 
     self.thirdShape.removeAllAnimations() 
     self.firstShape.opacity = 0.3; 
     self.secondShape.opacity = 0.5 
     self.thirdShape.opacity = 1.0 
    } else if action == .PreloaderActionFailure { 
     UIView.animateWithDuration(2, animations: { 
      self.thirdShape.strokeColor = UIColor.redColor().CGColor 
     }) {(completed : Bool) in 
      self.thirdShape.strokeColor = self.ringColor.CGColor 
     } 

    } 

    if action == .PreloaderActionStart { 

     highOpacity.fromValue = 0.0 
     highOpacity.toValue = 1.0 
     highOpacity.duration = animationDuration 
     highOpacity.autoreverses = true 
     highOpacity.repeatCount = .infinity 
     self.secondShape.addAnimation(highOpacity, forKey: "highOpacity") 

     middleOpacity.fromValue = 0.0 
     middleOpacity.toValue = 1.0 
     middleOpacity.duration = animationDuration 
     middleOpacity.autoreverses = true 
     middleOpacity.repeatCount = .infinity 
     middleOpacity.beginTime = CACurrentMediaTime() + 0.33 
     self.firstShape.addAnimation(middleOpacity, forKey: "middleOpacity") 

     lowOpacity.fromValue = 0.0 
     lowOpacity.toValue = 1.0 
     lowOpacity.duration = animationDuration 
     lowOpacity.autoreverses = true 
     lowOpacity.beginTime = CACurrentMediaTime() + 0.66 
     lowOpacity.repeatCount = .infinity 
     self.thirdShape.addAnimation(lowOpacity, forKey: "lowOpacity") 

    } 
} 

Das ist mein Spielplatz Datei

und Spielplatz im Projektnavigator

Anima Es funktioniert gut auf dem Gerät, aber wenn ich Spielplatz Animationen nicht funktioniert.

Antwort

7

Xcode 7, Swift 2

hinzufügen

import XCPlayground 

an der Oberseite des Spielplatzes, verwenden

XCPlaygroundPage.currentPage.liveView = view 

am Boden des Spielplatzes, wo view ist Ansicht, die Sie rendern möchten.

Sie müssen auch den "Assistenten-Editor" (im "Ansicht" -Menü) öffnen, um die aktuelle Live-Ansicht zu sehen.

Auch, wenn Sie asynchrone Operationen verwenden, haben Sie

XCPlaygroundPage.currentPage.needsIndefiniteExecution = true 

aufzunehmen, um sie in einem Spielplatz zu nutzen.

Xcode 8, Swift 3

import PlaygroundSupport 
PlaygroundPage.current.needsIndefiniteExecution = true 
PlaygroundPage.current.liveView = view 
+0

Ah, ich in Ihrem Screenshot nur bemerkt, dass Sie verwenden eigentlich schon XCPlayground. Dann könnte das Problem mit der Inline-Ansicht auftreten, es sollte stattdessen mit dem Assistenten-Editor funktionieren. – Moritz

+2

Oh, ich wusste nicht, dass ich den Assistenten Editor verwenden muss. Vielen Dank. –