Skip to content

Instantly share code, notes, and snippets.

@MickaelCruzDB
Created June 9, 2015 11:04
Show Gist options
  • Save MickaelCruzDB/db52f34b07280ca4a18b to your computer and use it in GitHub Desktop.
Save MickaelCruzDB/db52f34b07280ca4a18b to your computer and use it in GitHub Desktop.
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