Files
WWDC/PlayerUI/Controllers/PUIPictureContainerViewController.swift
T
Ben Newcombe 244c56d359 SwiftLint Compliance
51 warning-level lint issues remaining -- generally those which would require slightly more refactoring work to address.
2018-01-22 02:09:21 +00:00

67 lines
1.9 KiB
Swift

//
// PUIPictureContainerViewController.swift
// PlayerUI
//
// Created by Guilherme Rambo on 13/05/17.
// Copyright © 2017 Guilherme Rambo. All rights reserved.
//
import Cocoa
import AVFoundation
protocol PUIPictureContainerViewControllerDelegate: class {
func pictureContainerViewSuperviewDidChange(to superview: NSView?)
}
final class PUIPictureContainerViewController: NSViewController {
weak var delegate: PUIPictureContainerViewControllerDelegate?
let playerLayer: AVPlayerLayer
init(playerLayer: AVPlayerLayer) {
self.playerLayer = playerLayer
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func loadView() {
view = NSView()
view.wantsLayer = true
view.layer = PUIBoringLayer()
view.layer?.autoresizingMask = [.layerWidthSizable, .layerHeightSizable]
view.layer?.backgroundColor = NSColor.black.cgColor
playerLayer.frame = view.bounds
playerLayer.autoresizingMask = [.layerWidthSizable, .layerHeightSizable]
view.layer?.addSublayer(playerLayer)
view.addObserver(self, forKeyPath: #keyPath(NSView.superview), options: [.new], context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
guard let path = keyPath else { return }
switch path {
case #keyPath(NSView.superview):
viewDidMoveToSuperview()
default:
super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
}
}
func viewDidMoveToSuperview() {
delegate?.pictureContainerViewSuperviewDidChange(to: view.superview)
}
deinit {
view.removeObserver(self, forKeyPath: #keyPath(NSView.superview))
}
}