Start Bild Splash Screen Animation in SWIFT

Ich möchte erstellen Sie eine twitter-wie starten Bild für meine ios-app in swift.

Ich verstehe das Allgemeine problem mit animierten starten Bilder, und ich im Grunde wissen die Schritte zum erstellen einer solchen animation:

  1. Fügen Sie eine neue Ansicht direkt nachdem Sie die app gestartet, mit dem genau gleichen Inhalt wie der launchimage
  2. Animieren, anzeigen
  3. Lassen Sie den Blick verschwinden

Fand ich dieses geniale Quelle: http://iosdevtips.co/post/88481653818/twitter-ios-app-bird-zoom-animation

Aber dieser Kerl verwendet eine Maske, und ich bin nicht in der Lage zu ändern, seinen code, um die "echten" twitter-wie animation, ohne eine Maske, aber nur ein animiertes (zoom-in) Bild.

Also wie füge ich eine neue Ansicht der aktuellen Ansicht? Wenn ich eine Untersicht, wie kann ich erkennen, dass die Ansicht später auf die Fortschritte, wenn ich löschen müssen, um die Untersicht in animationDidStop?

Oh, und ich würde gerne alles tun, was in der AppDelegate.

Hier ist mein Aktueller Ansatz:

Einrichten der anzeigen im AppDelegate:

import UIKit
import QuartzCore

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var viewForLayer: UIView!
    var window: UIWindow?

    var emoji: CALayer {
      return viewForLayer.layer
    }

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

      self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
      //step 1: recreate the launch image

      self.emoji.backgroundColor = UIColor(red: 52/255, green: 52/255, blue: 52/255, alpha: 0).CGColor
      self.emoji.contents = UIImage(named: "SplashScreenEmoji")!.CGImage

      self.emoji.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
      self.emoji.anchorPoint = CGPoint(x: 0.5, y: 0.5)
      self.emoji.position = CGPoint(x: self.window!.frame.size.width/2, y: self.window!.frame.size.height/2)

      //self.window!.addSubview(viewForLayer) or
      viewForLayer.layer.addSublayer(emoji)

      //step 2: add the animation to that view
      animateEmoji()

      self.window!.makeKeyAndVisible()
      UIApplication.sharedApplication().statusBarHidden = true
      return true
    }
}

Für die animation:

func animateEmoji() {
    let keyFrameAnimation = CAKeyframeAnimation(keyPath: "bounds")
    keyFrameAnimation.delegate = self
    keyFrameAnimation.duration = 1
    keyFrameAnimation.beginTime = CACurrentMediaTime() + 1 //add delay of 1 second
    let initalBounds = NSValue(CGRect: emoji.bounds)
    let secondBounds = NSValue(CGRect: CGRect(x: 0, y: 0, width: 90, height: 90))
    let finalBounds = NSValue(CGRect: CGRect(x: 0, y: 0, width: 1500, height: 1500))
    keyFrameAnimation.values = [initalBounds, secondBounds, finalBounds]
    keyFrameAnimation.keyTimes = [0, 0.3, 1]
    keyFrameAnimation.timingFunctions = [CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut), CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)]
    self.emoji.addAnimation(keyFrameAnimation, forKey: "bounds")
}

override func animationDidStop(anim: CAAnimation!, finished flag: Bool) {
    //step 3: remove the view
    self.viewForLayer.removeFromSuperview()
}

Bekomme ich immer eine fatal error: unerwartet gefunden nil while unwrapping ein Optionaler Wert, ich denke, dies ist wegen der

var emoji: CALayer {
   return viewForLayer.layer
}

Ich auf jeden Fall stecken und brauchen die Hilfe von stackoverflow-community, bitte nicht beurteilen, da ich hier neu bin und Sie einfach lernen, wie man code swift 😉

Dank,
jo

InformationsquelleAutor Jo F.T. | 2015-04-30

Schreibe einen Kommentar