Created
June 9, 2015 11:04
-
-
Save MickaelCruzDB/db52f34b07280ca4a18b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Cocoa | |
import AVFoundation | |
import AVKit | |
class A: NSViewController { | |
var bgMovie: AVPlayerView = AVPlayerView() | |
var fileName: String = "Water_Demand_Forecasting" | |
@IBOutlet var player: AVPlayerView! | |
@IBOutlet var ZButton: NSButton! | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
playVideo(player, fileName: "Water_Demand_Forecasting") | |
} | |
override func viewWillAppear() { | |
player.bringSubviewToFront(ZButton) | |
} | |
@IBAction func present(sender: NSButton) { | |
let storyboard = NSStoryboard(name: "Main", bundle: nil) | |
switch sender.title { | |
case "Z": | |
let vc = storyboard?.instantiateControllerWithIdentifier("B") as! NSViewController | |
self.showViewController(vc) | |
default: break | |
} | |
} | |
let swipe = SlideTransitionAnimator() | |
func showViewController(viewController: NSViewController) { | |
// hide all others | |
self.dismissAllViewControllers() | |
//self.addChildViewController(viewController) | |
// present new viewcontroller | |
presentViewController(viewController, animator: swipe) | |
} | |
func dismissAllViewControllers() { | |
if let previousVC = self.childViewControllers.last as? NSViewController { | |
self.dismissViewController(previousVC) | |
previousVC.removeFromParentViewController() | |
} | |
} | |
//// | |
@IBAction func presentFade(sender: NSButton) { | |
let storyboard = NSStoryboard(name: "Main", bundle: nil) | |
switch sender.title { | |
case "Menu": | |
let vc = storyboard?.instantiateControllerWithIdentifier("MainVC") as! NSViewController | |
self.showViewControllerFade(vc) | |
default: break | |
} | |
} | |
let animator = FadeTransitionAnimator() | |
func showViewControllerFade(viewController: NSViewController) { | |
// hide all others | |
self.dismissAllViewControllers() | |
//self.addChildViewController(viewController) | |
// present new viewcontroller | |
presentViewController(viewController, animator: animator) | |
} | |
func dismissAllViewControllersFade() { | |
if let previousVC = self.childViewControllers.last as? NSViewController { | |
self.dismissViewController(previousVC) | |
previousVC.removeFromParentViewController() | |
} | |
} | |
@IBAction func Rotate(sender: NSButton) { | |
var transition:CGAffineTransform = CGAffineTransformMakeRotation(180) | |
let rotateDeg : CGFloat = 90 | |
// let rotate : NSAffineTransform = NSAffineTransform.alloc() | |
// | |
// rotate.rotateByDegrees(rotateDeg) | |
// rotate.concat() | |
// self.view.rotateByAngle(rotateDeg) | |
} | |
func playVideo(bgMovie: AVPlayerView, fileName: String) { | |
self.bgMovie = bgMovie | |
self.fileName = fileName | |
// Get the path of the video that will be the background of this screen | |
var path = NSBundle.mainBundle().pathForResource(self.fileName, ofType: "mp4") | |
// Make a player object, and put it into the frame we have | |
self.bgMovie.player = AVPlayer(URL: NSURL(fileURLWithPath: path!)) | |
var player = self.bgMovie.player | |
player.muted = true | |
// Don't do anything when the video ends | |
player.actionAtItemEnd = .None | |
// Handle the 'video ended' notification | |
NSNotificationCenter.defaultCenter().addObserver(self, | |
selector: "restartVideo:", | |
name: AVPlayerItemDidPlayToEndTimeNotification, | |
object: player.currentItem) | |
player.play() | |
} | |
// Small function to handle the 'restart video' notification | |
func restartVideo(sender: AnyObject) { | |
self.bgMovie.player.seekToTime(CMTimeMake(0, 1)) | |
self.bgMovie.player.play() | |
} | |
} | |
extension NSView { | |
func bringSubviewToFront(view: NSView) { | |
view.removeFromSuperview() | |
self.addSubview(view) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment