├── .gitignore
├── .ruby-version
├── .swift-version
├── .travis.yml
├── Art
└── IconArt.sketch
├── Gemfile
├── Gemfile.lock
├── LICENSE
├── Podfile
├── Podfile.lock
├── README.md
├── VideoBackgroundSample
├── AppDelegate.swift
├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Contents.json
│ └── spotify_logo.imageset
│ │ ├── Contents.json
│ │ ├── spotify_logo.png
│ │ ├── spotify_logo@2x.png
│ │ └── spotify_logo@3x.png
├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── Info.plist
├── ViewController.swift
└── spotifyVideo.mp4
├── VideoBackgroundSampleTests
├── Info.plist
└── VideoBackgroundSampleTests.swift
├── VideoBackgroundViewController.podspec
├── VideoBackgroundViewController.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
├── xcshareddata
│ └── xcschemes
│ │ └── VideoBackgroundViewController.xcscheme
└── xcuserdata
│ └── chris.xcuserdatad
│ └── xcschemes
│ └── xcschememanagement.plist
├── VideoBackgroundViewController.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── VideoBackgroundViewController
├── Info.plist
├── VideoBackgroundViewController.h
├── VideoBackgroundViewController.swift
└── VideoScalingMode.swift
├── VideoBackgroundViewControllerTests
├── Info.plist
└── VideoBackgroundControllerSpec.swift
└── Web
├── videoBackgroundViewController.gif
└── videoBackgroundViewControllerBanner.png
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata
19 |
20 | ## Other
21 | *.xccheckout
22 | *.moved-aside
23 | *.xcuserstate
24 | *.xcscmblueprint
25 |
26 | ## Obj-C/Swift specific
27 | *.hmap
28 | *.ipa
29 |
30 | ## Playgrounds
31 | timeline.xctimeline
32 | playground.xcworkspace
33 |
34 | # Swift Package Manager
35 | #
36 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
37 | # Packages/
38 | .build/
39 |
40 | # CocoaPods
41 | #
42 | # We recommend against adding the Pods directory to your .gitignore. However
43 | # you should judge for yourself, the pros and cons are mentioned at:
44 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
45 | #
46 | Pods/
47 |
48 | # Carthage
49 | #
50 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
51 | # Carthage/Checkouts
52 |
53 | Carthage/Build
54 |
55 | # fastlane
56 | #
57 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
58 | # screenshots whenever they are needed.
59 | # For more information about the recommended setup visit:
60 | # https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md
61 |
62 | fastlane/report.xml
63 | fastlane/screenshots
64 |
--------------------------------------------------------------------------------
/.ruby-version:
--------------------------------------------------------------------------------
1 | 2.5.1
2 |
--------------------------------------------------------------------------------
/.swift-version:
--------------------------------------------------------------------------------
1 | 4
2 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: objective-c
2 | osx_image: xcode7.2
3 | env:
4 | global:
5 | - LC_CTYPE=en_US.UTF-8
6 | - LANG=en_US.UTF-8
7 | before_install:
8 | - bundle update
9 | - bundle install
10 | - bundle exec pod update
11 | - bundle exec pod install
12 | script:
13 | - set -o pipefail
14 | - xcodebuild -version
15 | - xcodebuild -showsdks
16 | after_success:
17 | - bash <(curl -s https://codecov.io/bash)
18 |
--------------------------------------------------------------------------------
/Art/IconArt.sketch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PiXeL16/VideoBackgroundViewController/1876ae08fc6bb45e3359005a4da07f0381219acb/Art/IconArt.sketch
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | # The Cocoa library package manager.
4 | # The Cocoa library package manager.
5 | # gem 'cocoapods --pre'
6 | gem 'cocoapods'
7 | # A CocoaPods plugin to remove and de-intergrate CocoaPods from your project .
8 | gem 'cocoapods-deintegrate'
9 | # Add Fastlane for deployment and general awesomeness
10 | gem 'fastlane'
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | CFPropertyList (2.3.5)
5 | activesupport (4.2.10)
6 | i18n (~> 0.7)
7 | minitest (~> 5.1)
8 | thread_safe (~> 0.3, >= 0.3.4)
9 | tzinfo (~> 1.1)
10 | addressable (2.5.2)
11 | public_suffix (>= 2.0.2, < 4.0)
12 | babosa (1.0.2)
13 | claide (1.0.2)
14 | cocoapods (1.3.1)
15 | activesupport (>= 4.0.2, < 5)
16 | claide (>= 1.0.2, < 2.0)
17 | cocoapods-core (= 1.3.1)
18 | cocoapods-deintegrate (>= 1.0.1, < 2.0)
19 | cocoapods-downloader (>= 1.1.3, < 2.0)
20 | cocoapods-plugins (>= 1.0.0, < 2.0)
21 | cocoapods-search (>= 1.0.0, < 2.0)
22 | cocoapods-stats (>= 1.0.0, < 2.0)
23 | cocoapods-trunk (>= 1.2.0, < 2.0)
24 | cocoapods-try (>= 1.1.0, < 2.0)
25 | colored2 (~> 3.1)
26 | escape (~> 0.0.4)
27 | fourflusher (~> 2.0.1)
28 | gh_inspector (~> 1.0)
29 | molinillo (~> 0.5.7)
30 | nap (~> 1.0)
31 | ruby-macho (~> 1.1)
32 | xcodeproj (>= 1.5.1, < 2.0)
33 | cocoapods-core (1.3.1)
34 | activesupport (>= 4.0.2, < 6)
35 | fuzzy_match (~> 2.0.4)
36 | nap (~> 1.0)
37 | cocoapods-deintegrate (1.0.1)
38 | cocoapods-downloader (1.1.3)
39 | cocoapods-plugins (1.0.0)
40 | nap
41 | cocoapods-search (1.0.0)
42 | cocoapods-stats (1.0.0)
43 | cocoapods-trunk (1.3.0)
44 | nap (>= 0.8, < 2.0)
45 | netrc (~> 0.11)
46 | cocoapods-try (1.1.0)
47 | colored (1.2)
48 | colored2 (3.1.2)
49 | commander-fastlane (4.4.5)
50 | highline (~> 1.7.2)
51 | concurrent-ruby (1.0.5)
52 | declarative (0.0.10)
53 | declarative-option (0.1.0)
54 | domain_name (0.5.20170404)
55 | unf (>= 0.0.5, < 1.0.0)
56 | dotenv (2.2.1)
57 | escape (0.0.4)
58 | excon (0.59.0)
59 | faraday (0.13.1)
60 | multipart-post (>= 1.2, < 3)
61 | faraday-cookie_jar (0.0.6)
62 | faraday (>= 0.7.4)
63 | http-cookie (~> 1.0.0)
64 | faraday_middleware (0.12.2)
65 | faraday (>= 0.7.4, < 1.0)
66 | fastimage (2.1.0)
67 | fastlane (2.64.1)
68 | CFPropertyList (>= 2.3, < 3.0.0)
69 | addressable (>= 2.3, < 3.0.0)
70 | babosa (>= 1.0.2, < 2.0.0)
71 | bundler (>= 1.12.0, < 2.0.0)
72 | colored
73 | commander-fastlane (>= 4.4.5, < 5.0.0)
74 | dotenv (>= 2.1.1, < 3.0.0)
75 | excon (>= 0.45.0, < 1.0.0)
76 | faraday (~> 0.9)
77 | faraday-cookie_jar (~> 0.0.6)
78 | faraday_middleware (~> 0.9)
79 | fastimage (>= 2.1.0, < 3.0.0)
80 | gh_inspector (>= 1.0.1, < 2.0.0)
81 | google-api-client (>= 0.13.1, < 0.14.0)
82 | highline (>= 1.7.2, < 2.0.0)
83 | json (< 3.0.0)
84 | mini_magick (~> 4.5.1)
85 | multi_json
86 | multi_xml (~> 0.5)
87 | multipart-post (~> 2.0.0)
88 | plist (>= 3.1.0, < 4.0.0)
89 | public_suffix (~> 2.0.0)
90 | rubyzip (>= 1.1.0, < 2.0.0)
91 | security (= 0.1.3)
92 | slack-notifier (>= 1.3, < 2.0.0)
93 | terminal-notifier (>= 1.6.2, < 2.0.0)
94 | terminal-table (>= 1.4.5, < 2.0.0)
95 | tty-screen (~> 0.5.0)
96 | word_wrap (~> 1.0.0)
97 | xcodeproj (>= 1.5.2, < 2.0.0)
98 | xcpretty (>= 0.2.4, < 1.0.0)
99 | xcpretty-travis-formatter (>= 0.0.3)
100 | fourflusher (2.0.1)
101 | fuzzy_match (2.0.4)
102 | gh_inspector (1.0.3)
103 | google-api-client (0.13.6)
104 | addressable (~> 2.5, >= 2.5.1)
105 | googleauth (~> 0.5)
106 | httpclient (>= 2.8.1, < 3.0)
107 | mime-types (~> 3.0)
108 | representable (~> 3.0)
109 | retriable (>= 2.0, < 4.0)
110 | googleauth (0.6.2)
111 | faraday (~> 0.12)
112 | jwt (>= 1.4, < 3.0)
113 | logging (~> 2.0)
114 | memoist (~> 0.12)
115 | multi_json (~> 1.11)
116 | os (~> 0.9)
117 | signet (~> 0.7)
118 | highline (1.7.8)
119 | http-cookie (1.0.3)
120 | domain_name (~> 0.5)
121 | httpclient (2.8.3)
122 | i18n (0.9.1)
123 | concurrent-ruby (~> 1.0)
124 | json (2.1.0)
125 | jwt (2.1.0)
126 | little-plugger (1.1.4)
127 | logging (2.2.2)
128 | little-plugger (~> 1.1)
129 | multi_json (~> 1.10)
130 | memoist (0.16.0)
131 | mime-types (3.1)
132 | mime-types-data (~> 3.2015)
133 | mime-types-data (3.2016.0521)
134 | mini_magick (4.5.1)
135 | minitest (5.10.3)
136 | molinillo (0.5.7)
137 | multi_json (1.12.2)
138 | multi_xml (0.6.0)
139 | multipart-post (2.0.0)
140 | nanaimo (0.2.3)
141 | nap (1.1.0)
142 | netrc (0.11.0)
143 | os (0.9.6)
144 | plist (3.3.0)
145 | public_suffix (2.0.5)
146 | representable (3.0.4)
147 | declarative (< 0.1.0)
148 | declarative-option (< 0.2.0)
149 | uber (< 0.2.0)
150 | retriable (3.1.1)
151 | rouge (2.0.7)
152 | ruby-macho (1.1.0)
153 | rubyzip (1.2.1)
154 | security (0.1.3)
155 | signet (0.8.1)
156 | addressable (~> 2.3)
157 | faraday (~> 0.9)
158 | jwt (>= 1.5, < 3.0)
159 | multi_json (~> 1.10)
160 | slack-notifier (1.5.1)
161 | terminal-notifier (1.8.0)
162 | terminal-table (1.8.0)
163 | unicode-display_width (~> 1.1, >= 1.1.1)
164 | thread_safe (0.3.6)
165 | tty-screen (0.5.1)
166 | tzinfo (1.2.4)
167 | thread_safe (~> 0.1)
168 | uber (0.1.0)
169 | unf (0.1.4)
170 | unf_ext
171 | unf_ext (0.0.7.4)
172 | unicode-display_width (1.3.0)
173 | word_wrap (1.0.0)
174 | xcodeproj (1.5.3)
175 | CFPropertyList (~> 2.3.3)
176 | claide (>= 1.0.2, < 2.0)
177 | colored2 (~> 3.1)
178 | nanaimo (~> 0.2.3)
179 | xcpretty (0.2.8)
180 | rouge (~> 2.0.7)
181 | xcpretty-travis-formatter (1.0.0)
182 | xcpretty (~> 0.2, >= 0.0.7)
183 |
184 | PLATFORMS
185 | ruby
186 |
187 | DEPENDENCIES
188 | cocoapods
189 | cocoapods-deintegrate
190 | fastlane
191 |
192 | BUNDLED WITH
193 | 1.14.6
194 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Chris Jimenez
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Podfile:
--------------------------------------------------------------------------------
1 | platform :ios, '9.0'
2 | use_frameworks!
3 |
4 | def test_pods
5 | pod 'Quick'
6 | pod 'Nimble'
7 | end
8 |
9 | target 'VideoBackgroundViewController' do
10 |
11 | end
12 |
13 | target 'VideoBackgroundViewControllerTests' do
14 | test_pods
15 | end
16 |
17 | target 'VideoBackgroundSample' do
18 |
19 | end
20 |
21 | target 'VideoBackgroundSampleTests' do
22 |
23 | end
24 |
25 |
--------------------------------------------------------------------------------
/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Nimble (7.3.1)
3 | - Quick (1.3.2)
4 |
5 | DEPENDENCIES:
6 | - Nimble
7 | - Quick
8 |
9 | SPEC CHECKSUMS:
10 | Nimble: 04f732da099ea4d153122aec8c2a88fd0c7219ae
11 | Quick: 2623cb30d7a7f41ca62f684f679586558f483d46
12 |
13 | PODFILE CHECKSUM: 574abb6050df415865226100a56a4ee998a79993
14 |
15 | COCOAPODS: 1.3.1
16 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | [](https://travis-ci.org/PiXeL16/VideoBackgroundViewController/) [](https://img.shields.io/cocoapods/v/VideoBackgroundViewController.svg) [](https://raw.githubusercontent.com/PiXeL16/VideoBackgroundViewController/master/LICENSE)
4 |
5 | # VideoBackgroundViewController
6 | A View Controller that shows a video in the background, like Spotify!
7 |
8 | 
9 |
10 | :star: Features
11 | ---
12 | * Customizable video URL.
13 | * Play video with sound or not.
14 | * Customizable sound level.
15 | * Customizable video alpha channel.
16 | * Loop the video or not
17 | * Customizable video scaling mode. Resize, ResizeAspect, ResizeAspectFill(Default)
18 | * Works in portrait and landscape orientation
19 |
20 | :octocat: Installation
21 | ---
22 | Get `VideoBackgroundViewController` on CocoaPods, just add `pod 'VideoBackgroundViewController'` to your `Podfile` and then run `pod install`.
23 |
24 |
25 | :metal: Usage
26 | ---
27 | Usage is pretty easy, just inherid your ViewController from `VideoBackgroundViewController` and set your initial video URL like:
28 | ```
29 | import VideoBackgroundViewController
30 |
31 | override func viewDidLoad() {
32 | super.viewDidLoad()
33 |
34 | let url = NSURL.fileURLWithPath(NSBundle.mainBundle().pathForResource("spotifyVideo", ofType: "mp4")!)
35 |
36 | self.videoURL = url
37 | }
38 | ```
39 |
40 | You can also customize the default values like:
41 |
42 | ```
43 | import VideoBackgroundViewController
44 |
45 | override func viewDidLoad() {
46 | super.viewDidLoad()
47 |
48 | let url = NSURL.fileURLWithPath(NSBundle.mainBundle().pathForResource("spotifyVideo", ofType: "mp4")!)
49 |
50 | self.videoURL = url
51 | self.videoFrame = view.frame
52 | self.videoShouldLoop = true
53 | self.alpha = 0.5
54 | self.playSound = true
55 | self.videoScalingMode = .ResizeAspectFill
56 | }
57 | ```
58 |
59 | TODO
60 | -----
61 | * Protocolize the f*ck out of this
62 | * Better code coverage
63 |
64 | :alien: Author
65 | ------
66 | Chris Jimenez - http://chrisjimenez.net, [@chrisjimeneznat](http://twitter.com/chrisjimeneznat)
67 |
68 | Some ideas where taken from https://github.com/allenwong/30DaysofSwift
69 |
70 | :beer: Donate
71 | ------
72 | If you want to buy me a beer, you can donate to my coin addresses below:
73 | #### BTC
74 | 1BeGBew4CBdLgUSmvoyiU1LrM99GpkXgkj
75 | #### ETH
76 | 0xa59a3793E3Cb5f3B1AdE6887783D225EDf67192d
77 | #### LTC
78 | Ld6FB3Tqjf6B8iz9Gn9sMr7BnowAjSUXaV
79 |
80 | ## License
81 | `VideoBackgroundViewController` is released under the MIT license. See [LICENSE](https://github.com/pixel16/VideoBackground/blob/master/LICENSE) for details.
82 |
--------------------------------------------------------------------------------
/VideoBackgroundSample/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // VideoBackgroundSample
4 | //
5 | // Created by Chris Jimenez on 2/22/16.
6 | // Copyright © 2016 Chris Jimenez. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @UIApplicationMain
12 | class AppDelegate: UIResponder, UIApplicationDelegate {
13 |
14 | var window: UIWindow?
15 |
16 |
17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
18 | // Override point for customization after application launch.
19 | return true
20 | }
21 |
22 | func applicationWillResignActive(_ application: UIApplication) {
23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
24 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
25 | }
26 |
27 | func applicationDidEnterBackground(_ application: UIApplication) {
28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
30 | }
31 |
32 | func applicationWillEnterForeground(_ application: UIApplication) {
33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
34 | }
35 |
36 | func applicationDidBecomeActive(_ application: UIApplication) {
37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
38 | }
39 |
40 | func applicationWillTerminate(_ application: UIApplication) {
41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
42 | }
43 |
44 |
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/VideoBackgroundSample/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "ipad",
35 | "size" : "29x29",
36 | "scale" : "1x"
37 | },
38 | {
39 | "idiom" : "ipad",
40 | "size" : "29x29",
41 | "scale" : "2x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "40x40",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "40x40",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "76x76",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "76x76",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "83.5x83.5",
66 | "scale" : "2x"
67 | }
68 | ],
69 | "info" : {
70 | "version" : 1,
71 | "author" : "xcode"
72 | }
73 | }
--------------------------------------------------------------------------------
/VideoBackgroundSample/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/VideoBackgroundSample/Assets.xcassets/spotify_logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "spotify_logo.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "spotify_logo@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "spotify_logo@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/VideoBackgroundSample/Assets.xcassets/spotify_logo.imageset/spotify_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PiXeL16/VideoBackgroundViewController/1876ae08fc6bb45e3359005a4da07f0381219acb/VideoBackgroundSample/Assets.xcassets/spotify_logo.imageset/spotify_logo.png
--------------------------------------------------------------------------------
/VideoBackgroundSample/Assets.xcassets/spotify_logo.imageset/spotify_logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PiXeL16/VideoBackgroundViewController/1876ae08fc6bb45e3359005a4da07f0381219acb/VideoBackgroundSample/Assets.xcassets/spotify_logo.imageset/spotify_logo@2x.png
--------------------------------------------------------------------------------
/VideoBackgroundSample/Assets.xcassets/spotify_logo.imageset/spotify_logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PiXeL16/VideoBackgroundViewController/1876ae08fc6bb45e3359005a4da07f0381219acb/VideoBackgroundSample/Assets.xcassets/spotify_logo.imageset/spotify_logo@3x.png
--------------------------------------------------------------------------------
/VideoBackgroundSample/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/VideoBackgroundSample/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
32 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/VideoBackgroundSample/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 0.0.6
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 | UISupportedInterfaceOrientations~ipad
40 |
41 | UIInterfaceOrientationPortrait
42 | UIInterfaceOrientationPortraitUpsideDown
43 | UIInterfaceOrientationLandscapeLeft
44 | UIInterfaceOrientationLandscapeRight
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/VideoBackgroundSample/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // VideoBackgroundSample
4 | //
5 | // Created by Chris Jimenez on 2/22/16.
6 | // Copyright © 2016 Chris Jimenez. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import VideoBackgroundViewController
11 |
12 | class ViewController: VideoBackgroundViewController {
13 |
14 | override func viewDidLoad() {
15 | super.viewDidLoad()
16 | setVideo()
17 | // Do any additional setup after loading the view, typically from a nib.
18 | }
19 |
20 | override func didReceiveMemoryWarning() {
21 | super.didReceiveMemoryWarning()
22 | // Dispose of any resources that can be recreated.
23 | }
24 |
25 | func setVideo()
26 | {
27 |
28 | let url = URL(fileURLWithPath: Bundle.main.path(forResource: "spotifyVideo", ofType: "mp4")!)
29 |
30 | self.videoURL = url
31 | // view.userInteractionEnabled = false
32 |
33 | }
34 |
35 |
36 | override var preferredStatusBarStyle: UIStatusBarStyle {
37 | return .lightContent
38 | }
39 |
40 |
41 | }
42 |
43 |
--------------------------------------------------------------------------------
/VideoBackgroundSample/spotifyVideo.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PiXeL16/VideoBackgroundViewController/1876ae08fc6bb45e3359005a4da07f0381219acb/VideoBackgroundSample/spotifyVideo.mp4
--------------------------------------------------------------------------------
/VideoBackgroundSampleTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/VideoBackgroundSampleTests/VideoBackgroundSampleTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // VideoBackgroundSampleTests.swift
3 | // VideoBackgroundSampleTests
4 | //
5 | // Created by Chris Jimenez on 2/22/16.
6 | // Copyright © 2016 Chris Jimenez. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | @testable import VideoBackgroundSample
11 |
12 | class VideoBackgroundSampleTests: XCTestCase {
13 |
14 | override func setUp() {
15 | super.setUp()
16 | // Put setup code here. This method is called before the invocation of each test method in the class.
17 | }
18 |
19 | override func tearDown() {
20 | // Put teardown code here. This method is called after the invocation of each test method in the class.
21 | super.tearDown()
22 | }
23 |
24 | func testExample() {
25 | // This is an example of a functional test case.
26 | // Use XCTAssert and related functions to verify your tests produce the correct results.
27 | }
28 |
29 | func testPerformanceExample() {
30 | // This is an example of a performance test case.
31 | self.measure {
32 | // Put the code you want to measure the time of here.
33 | }
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/VideoBackgroundViewController.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 |
3 | s.name = "VideoBackgroundViewController"
4 | s.version = "0.0.6"
5 | s.summary = "A View Controller that shows a video in the background, like Spotify"
6 | s.description = <<-DESC
7 | A View Controller that shows a video in the background, like Spotify, written in Swift
8 | DESC
9 |
10 | s.homepage = "https://github.com/PiXeL16/VideoBackgroundViewController"
11 | s.license = { :type => "MIT", :file => "LICENSE" }
12 |
13 | s.author = { "Chris Jimenez" => "cjimenez16@gmail.com" }
14 | s.social_media_url = "http://twitter.com/chrisjimeneznat"
15 |
16 | s.platform = :ios, "9.0"
17 |
18 | s.source = { :git => "https://github.com/PiXeL16/VideoBackgroundViewController.git", :tag => s.version }
19 | s.source_files = "VideoBackgroundViewController/", "VideoBackgroundViewController/**/*.{h,m,swift}"
20 |
21 | s.requires_arc = true
22 |
23 | end
24 |
--------------------------------------------------------------------------------
/VideoBackgroundViewController.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 5CC1C46734D9B619A7BDADE9 /* Pods_VideoBackgroundViewController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAF977946FE717F7E0BA46E6 /* Pods_VideoBackgroundViewController.framework */; };
11 | 83286D7E1C7C12670083CB19 /* VideoBackgroundViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 83286D7D1C7C12670083CB19 /* VideoBackgroundViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
12 | 83286D851C7C12670083CB19 /* VideoBackgroundViewController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83286D7A1C7C12670083CB19 /* VideoBackgroundViewController.framework */; };
13 | 83286D9B1C7C12AB0083CB19 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83286D9A1C7C12AB0083CB19 /* AppDelegate.swift */; };
14 | 83286D9D1C7C12AB0083CB19 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83286D9C1C7C12AB0083CB19 /* ViewController.swift */; };
15 | 83286DA01C7C12AB0083CB19 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 83286D9E1C7C12AB0083CB19 /* Main.storyboard */; };
16 | 83286DA21C7C12AB0083CB19 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 83286DA11C7C12AB0083CB19 /* Assets.xcassets */; };
17 | 83286DA51C7C12AB0083CB19 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 83286DA31C7C12AB0083CB19 /* LaunchScreen.storyboard */; };
18 | 83286DB01C7C12AB0083CB19 /* VideoBackgroundSampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83286DAF1C7C12AB0083CB19 /* VideoBackgroundSampleTests.swift */; };
19 | 83286DB91C7C18610083CB19 /* VideoBackgroundViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83286DB81C7C18610083CB19 /* VideoBackgroundViewController.swift */; };
20 | 83286DBB1C7C1C660083CB19 /* VideoScalingMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83286DBA1C7C1C660083CB19 /* VideoScalingMode.swift */; };
21 | 837B5EF61C7C20E7007C81EE /* VideoBackgroundControllerSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 837B5EF51C7C20E7007C81EE /* VideoBackgroundControllerSpec.swift */; };
22 | 837B5EF81C7C2D4B007C81EE /* spotifyVideo.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 837B5EF71C7C2BD6007C81EE /* spotifyVideo.mp4 */; };
23 | 837B5EFD1C7D8AA7007C81EE /* VideoBackgroundViewController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83286D7A1C7C12670083CB19 /* VideoBackgroundViewController.framework */; };
24 | 9B39717B80E92AC1B74CBE3E /* Pods_VideoBackgroundViewControllerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 905545B0DB0E0B8F4E532CBB /* Pods_VideoBackgroundViewControllerTests.framework */; };
25 | B806160DF0F717F1227F09C5 /* Pods_VideoBackgroundSample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C877AE5912077C30AAA649C /* Pods_VideoBackgroundSample.framework */; };
26 | B86C93A5B096ED00DCD432E2 /* Pods_VideoBackgroundSampleTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D83B75C36FE40E75626CCC4 /* Pods_VideoBackgroundSampleTests.framework */; };
27 | CF3138981ED6C59B00702BC8 /* VideoBackgroundViewController.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 83286D7A1C7C12670083CB19 /* VideoBackgroundViewController.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
28 | /* End PBXBuildFile section */
29 |
30 | /* Begin PBXContainerItemProxy section */
31 | 83286D861C7C12670083CB19 /* PBXContainerItemProxy */ = {
32 | isa = PBXContainerItemProxy;
33 | containerPortal = 83286D711C7C12670083CB19 /* Project object */;
34 | proxyType = 1;
35 | remoteGlobalIDString = 83286D791C7C12670083CB19;
36 | remoteInfo = VideoBackgroundViewController;
37 | };
38 | 83286DAC1C7C12AB0083CB19 /* PBXContainerItemProxy */ = {
39 | isa = PBXContainerItemProxy;
40 | containerPortal = 83286D711C7C12670083CB19 /* Project object */;
41 | proxyType = 1;
42 | remoteGlobalIDString = 83286D971C7C12AB0083CB19;
43 | remoteInfo = VideoBackgroundSample;
44 | };
45 | CF3138991ED6C59B00702BC8 /* PBXContainerItemProxy */ = {
46 | isa = PBXContainerItemProxy;
47 | containerPortal = 83286D711C7C12670083CB19 /* Project object */;
48 | proxyType = 1;
49 | remoteGlobalIDString = 83286D791C7C12670083CB19;
50 | remoteInfo = VideoBackgroundViewController;
51 | };
52 | /* End PBXContainerItemProxy section */
53 |
54 | /* Begin PBXCopyFilesBuildPhase section */
55 | CF31389B1ED6C59B00702BC8 /* Embed Frameworks */ = {
56 | isa = PBXCopyFilesBuildPhase;
57 | buildActionMask = 2147483647;
58 | dstPath = "";
59 | dstSubfolderSpec = 10;
60 | files = (
61 | CF3138981ED6C59B00702BC8 /* VideoBackgroundViewController.framework in Embed Frameworks */,
62 | );
63 | name = "Embed Frameworks";
64 | runOnlyForDeploymentPostprocessing = 0;
65 | };
66 | /* End PBXCopyFilesBuildPhase section */
67 |
68 | /* Begin PBXFileReference section */
69 | 0CCAD3D7AAF842733FABE151 /* Pods-VideoBackgroundSample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VideoBackgroundSample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-VideoBackgroundSample/Pods-VideoBackgroundSample.debug.xcconfig"; sourceTree = ""; };
70 | 2C877AE5912077C30AAA649C /* Pods_VideoBackgroundSample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_VideoBackgroundSample.framework; sourceTree = BUILT_PRODUCTS_DIR; };
71 | 2D83B75C36FE40E75626CCC4 /* Pods_VideoBackgroundSampleTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_VideoBackgroundSampleTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
72 | 2E5029A4A2A75EA9094869B7 /* Pods-VideoBackgroundViewControllerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VideoBackgroundViewControllerTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-VideoBackgroundViewControllerTests/Pods-VideoBackgroundViewControllerTests.debug.xcconfig"; sourceTree = ""; };
73 | 73E8AC5742EFADD3CC2F69CF /* Pods-VideoBackgroundViewControllerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VideoBackgroundViewControllerTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-VideoBackgroundViewControllerTests/Pods-VideoBackgroundViewControllerTests.release.xcconfig"; sourceTree = ""; };
74 | 83286D7A1C7C12670083CB19 /* VideoBackgroundViewController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VideoBackgroundViewController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
75 | 83286D7D1C7C12670083CB19 /* VideoBackgroundViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VideoBackgroundViewController.h; sourceTree = ""; };
76 | 83286D7F1C7C12670083CB19 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
77 | 83286D841C7C12670083CB19 /* VideoBackgroundViewControllerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VideoBackgroundViewControllerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
78 | 83286D8B1C7C12670083CB19 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
79 | 83286D981C7C12AB0083CB19 /* VideoBackgroundSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VideoBackgroundSample.app; sourceTree = BUILT_PRODUCTS_DIR; };
80 | 83286D9A1C7C12AB0083CB19 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
81 | 83286D9C1C7C12AB0083CB19 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
82 | 83286D9F1C7C12AB0083CB19 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
83 | 83286DA11C7C12AB0083CB19 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
84 | 83286DA41C7C12AB0083CB19 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
85 | 83286DA61C7C12AB0083CB19 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
86 | 83286DAB1C7C12AB0083CB19 /* VideoBackgroundSampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VideoBackgroundSampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
87 | 83286DAF1C7C12AB0083CB19 /* VideoBackgroundSampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoBackgroundSampleTests.swift; sourceTree = ""; };
88 | 83286DB11C7C12AB0083CB19 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
89 | 83286DB81C7C18610083CB19 /* VideoBackgroundViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoBackgroundViewController.swift; sourceTree = ""; };
90 | 83286DBA1C7C1C660083CB19 /* VideoScalingMode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoScalingMode.swift; sourceTree = ""; };
91 | 837B5EF51C7C20E7007C81EE /* VideoBackgroundControllerSpec.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoBackgroundControllerSpec.swift; sourceTree = ""; };
92 | 837B5EF71C7C2BD6007C81EE /* spotifyVideo.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = spotifyVideo.mp4; sourceTree = ""; };
93 | 905545B0DB0E0B8F4E532CBB /* Pods_VideoBackgroundViewControllerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_VideoBackgroundViewControllerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
94 | B3AD2E50D1EA27114A2E06B7 /* Pods-VideoBackgroundSampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VideoBackgroundSampleTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-VideoBackgroundSampleTests/Pods-VideoBackgroundSampleTests.debug.xcconfig"; sourceTree = ""; };
95 | C42A5016E55AAC206157B3EE /* Pods-VideoBackgroundViewController.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VideoBackgroundViewController.release.xcconfig"; path = "Pods/Target Support Files/Pods-VideoBackgroundViewController/Pods-VideoBackgroundViewController.release.xcconfig"; sourceTree = ""; };
96 | EAF977946FE717F7E0BA46E6 /* Pods_VideoBackgroundViewController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_VideoBackgroundViewController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
97 | EFA51B51CCDD01F791D09E08 /* Pods-VideoBackgroundSampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VideoBackgroundSampleTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-VideoBackgroundSampleTests/Pods-VideoBackgroundSampleTests.release.xcconfig"; sourceTree = ""; };
98 | FBC78DE0150385128DA4D76E /* Pods-VideoBackgroundSample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VideoBackgroundSample.release.xcconfig"; path = "Pods/Target Support Files/Pods-VideoBackgroundSample/Pods-VideoBackgroundSample.release.xcconfig"; sourceTree = ""; };
99 | FCEF73A73E4EF7FDDE4CB730 /* Pods-VideoBackgroundViewController.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VideoBackgroundViewController.debug.xcconfig"; path = "Pods/Target Support Files/Pods-VideoBackgroundViewController/Pods-VideoBackgroundViewController.debug.xcconfig"; sourceTree = ""; };
100 | /* End PBXFileReference section */
101 |
102 | /* Begin PBXFrameworksBuildPhase section */
103 | 83286D761C7C12670083CB19 /* Frameworks */ = {
104 | isa = PBXFrameworksBuildPhase;
105 | buildActionMask = 2147483647;
106 | files = (
107 | 5CC1C46734D9B619A7BDADE9 /* Pods_VideoBackgroundViewController.framework in Frameworks */,
108 | );
109 | runOnlyForDeploymentPostprocessing = 0;
110 | };
111 | 83286D811C7C12670083CB19 /* Frameworks */ = {
112 | isa = PBXFrameworksBuildPhase;
113 | buildActionMask = 2147483647;
114 | files = (
115 | 83286D851C7C12670083CB19 /* VideoBackgroundViewController.framework in Frameworks */,
116 | 9B39717B80E92AC1B74CBE3E /* Pods_VideoBackgroundViewControllerTests.framework in Frameworks */,
117 | );
118 | runOnlyForDeploymentPostprocessing = 0;
119 | };
120 | 83286D951C7C12AB0083CB19 /* Frameworks */ = {
121 | isa = PBXFrameworksBuildPhase;
122 | buildActionMask = 2147483647;
123 | files = (
124 | 837B5EFD1C7D8AA7007C81EE /* VideoBackgroundViewController.framework in Frameworks */,
125 | B806160DF0F717F1227F09C5 /* Pods_VideoBackgroundSample.framework in Frameworks */,
126 | );
127 | runOnlyForDeploymentPostprocessing = 0;
128 | };
129 | 83286DA81C7C12AB0083CB19 /* Frameworks */ = {
130 | isa = PBXFrameworksBuildPhase;
131 | buildActionMask = 2147483647;
132 | files = (
133 | B86C93A5B096ED00DCD432E2 /* Pods_VideoBackgroundSampleTests.framework in Frameworks */,
134 | );
135 | runOnlyForDeploymentPostprocessing = 0;
136 | };
137 | /* End PBXFrameworksBuildPhase section */
138 |
139 | /* Begin PBXGroup section */
140 | 1947342467DF054D0A8E92FE /* Pods */ = {
141 | isa = PBXGroup;
142 | children = (
143 | 0CCAD3D7AAF842733FABE151 /* Pods-VideoBackgroundSample.debug.xcconfig */,
144 | FBC78DE0150385128DA4D76E /* Pods-VideoBackgroundSample.release.xcconfig */,
145 | B3AD2E50D1EA27114A2E06B7 /* Pods-VideoBackgroundSampleTests.debug.xcconfig */,
146 | EFA51B51CCDD01F791D09E08 /* Pods-VideoBackgroundSampleTests.release.xcconfig */,
147 | FCEF73A73E4EF7FDDE4CB730 /* Pods-VideoBackgroundViewController.debug.xcconfig */,
148 | C42A5016E55AAC206157B3EE /* Pods-VideoBackgroundViewController.release.xcconfig */,
149 | 2E5029A4A2A75EA9094869B7 /* Pods-VideoBackgroundViewControllerTests.debug.xcconfig */,
150 | 73E8AC5742EFADD3CC2F69CF /* Pods-VideoBackgroundViewControllerTests.release.xcconfig */,
151 | );
152 | name = Pods;
153 | sourceTree = "";
154 | };
155 | 5B8BC47943F1078487CE808C /* Frameworks */ = {
156 | isa = PBXGroup;
157 | children = (
158 | 2C877AE5912077C30AAA649C /* Pods_VideoBackgroundSample.framework */,
159 | 2D83B75C36FE40E75626CCC4 /* Pods_VideoBackgroundSampleTests.framework */,
160 | EAF977946FE717F7E0BA46E6 /* Pods_VideoBackgroundViewController.framework */,
161 | 905545B0DB0E0B8F4E532CBB /* Pods_VideoBackgroundViewControllerTests.framework */,
162 | );
163 | name = Frameworks;
164 | sourceTree = "";
165 | };
166 | 83286D701C7C12670083CB19 = {
167 | isa = PBXGroup;
168 | children = (
169 | 83286D7C1C7C12670083CB19 /* VideoBackgroundViewController */,
170 | 83286D881C7C12670083CB19 /* VideoBackgroundViewControllerTests */,
171 | 83286D991C7C12AB0083CB19 /* VideoBackgroundSample */,
172 | 83286DAE1C7C12AB0083CB19 /* VideoBackgroundSampleTests */,
173 | 83286D7B1C7C12670083CB19 /* Products */,
174 | 1947342467DF054D0A8E92FE /* Pods */,
175 | 5B8BC47943F1078487CE808C /* Frameworks */,
176 | );
177 | sourceTree = "";
178 | };
179 | 83286D7B1C7C12670083CB19 /* Products */ = {
180 | isa = PBXGroup;
181 | children = (
182 | 83286D7A1C7C12670083CB19 /* VideoBackgroundViewController.framework */,
183 | 83286D841C7C12670083CB19 /* VideoBackgroundViewControllerTests.xctest */,
184 | 83286D981C7C12AB0083CB19 /* VideoBackgroundSample.app */,
185 | 83286DAB1C7C12AB0083CB19 /* VideoBackgroundSampleTests.xctest */,
186 | );
187 | name = Products;
188 | sourceTree = "";
189 | };
190 | 83286D7C1C7C12670083CB19 /* VideoBackgroundViewController */ = {
191 | isa = PBXGroup;
192 | children = (
193 | 837B5EFA1C7C2FDA007C81EE /* Extensions */,
194 | 83286D7D1C7C12670083CB19 /* VideoBackgroundViewController.h */,
195 | 83286D7F1C7C12670083CB19 /* Info.plist */,
196 | 83286DB81C7C18610083CB19 /* VideoBackgroundViewController.swift */,
197 | 83286DBA1C7C1C660083CB19 /* VideoScalingMode.swift */,
198 | );
199 | path = VideoBackgroundViewController;
200 | sourceTree = "";
201 | };
202 | 83286D881C7C12670083CB19 /* VideoBackgroundViewControllerTests */ = {
203 | isa = PBXGroup;
204 | children = (
205 | 83286D8B1C7C12670083CB19 /* Info.plist */,
206 | 837B5EF51C7C20E7007C81EE /* VideoBackgroundControllerSpec.swift */,
207 | );
208 | path = VideoBackgroundViewControllerTests;
209 | sourceTree = "";
210 | };
211 | 83286D991C7C12AB0083CB19 /* VideoBackgroundSample */ = {
212 | isa = PBXGroup;
213 | children = (
214 | 837B5EF71C7C2BD6007C81EE /* spotifyVideo.mp4 */,
215 | 83286D9A1C7C12AB0083CB19 /* AppDelegate.swift */,
216 | 83286D9C1C7C12AB0083CB19 /* ViewController.swift */,
217 | 83286D9E1C7C12AB0083CB19 /* Main.storyboard */,
218 | 83286DA11C7C12AB0083CB19 /* Assets.xcassets */,
219 | 83286DA31C7C12AB0083CB19 /* LaunchScreen.storyboard */,
220 | 83286DA61C7C12AB0083CB19 /* Info.plist */,
221 | );
222 | path = VideoBackgroundSample;
223 | sourceTree = "";
224 | };
225 | 83286DAE1C7C12AB0083CB19 /* VideoBackgroundSampleTests */ = {
226 | isa = PBXGroup;
227 | children = (
228 | 83286DAF1C7C12AB0083CB19 /* VideoBackgroundSampleTests.swift */,
229 | 83286DB11C7C12AB0083CB19 /* Info.plist */,
230 | );
231 | path = VideoBackgroundSampleTests;
232 | sourceTree = "";
233 | };
234 | 837B5EFA1C7C2FDA007C81EE /* Extensions */ = {
235 | isa = PBXGroup;
236 | children = (
237 | );
238 | name = Extensions;
239 | sourceTree = "";
240 | };
241 | /* End PBXGroup section */
242 |
243 | /* Begin PBXHeadersBuildPhase section */
244 | 83286D771C7C12670083CB19 /* Headers */ = {
245 | isa = PBXHeadersBuildPhase;
246 | buildActionMask = 2147483647;
247 | files = (
248 | 83286D7E1C7C12670083CB19 /* VideoBackgroundViewController.h in Headers */,
249 | );
250 | runOnlyForDeploymentPostprocessing = 0;
251 | };
252 | /* End PBXHeadersBuildPhase section */
253 |
254 | /* Begin PBXNativeTarget section */
255 | 83286D791C7C12670083CB19 /* VideoBackgroundViewController */ = {
256 | isa = PBXNativeTarget;
257 | buildConfigurationList = 83286D8E1C7C12670083CB19 /* Build configuration list for PBXNativeTarget "VideoBackgroundViewController" */;
258 | buildPhases = (
259 | 82CD4FDFE1ADC12B1A5B0334 /* [CP] Check Pods Manifest.lock */,
260 | 83286D751C7C12670083CB19 /* Sources */,
261 | 83286D761C7C12670083CB19 /* Frameworks */,
262 | 83286D771C7C12670083CB19 /* Headers */,
263 | 83286D781C7C12670083CB19 /* Resources */,
264 | 3B70F6DA295FB539C7370926 /* [CP] Copy Pods Resources */,
265 | );
266 | buildRules = (
267 | );
268 | dependencies = (
269 | );
270 | name = VideoBackgroundViewController;
271 | productName = VideoBackgroundViewController;
272 | productReference = 83286D7A1C7C12670083CB19 /* VideoBackgroundViewController.framework */;
273 | productType = "com.apple.product-type.framework";
274 | };
275 | 83286D831C7C12670083CB19 /* VideoBackgroundViewControllerTests */ = {
276 | isa = PBXNativeTarget;
277 | buildConfigurationList = 83286D911C7C12670083CB19 /* Build configuration list for PBXNativeTarget "VideoBackgroundViewControllerTests" */;
278 | buildPhases = (
279 | 52D38F2433F9914772365AA6 /* [CP] Check Pods Manifest.lock */,
280 | 83286D801C7C12670083CB19 /* Sources */,
281 | 83286D811C7C12670083CB19 /* Frameworks */,
282 | 83286D821C7C12670083CB19 /* Resources */,
283 | ABF4572A5573DBDD9E7C4F9F /* [CP] Embed Pods Frameworks */,
284 | B7753C1689C64E3A65AE5229 /* [CP] Copy Pods Resources */,
285 | );
286 | buildRules = (
287 | );
288 | dependencies = (
289 | 83286D871C7C12670083CB19 /* PBXTargetDependency */,
290 | );
291 | name = VideoBackgroundViewControllerTests;
292 | productName = VideoBackgroundViewControllerTests;
293 | productReference = 83286D841C7C12670083CB19 /* VideoBackgroundViewControllerTests.xctest */;
294 | productType = "com.apple.product-type.bundle.unit-test";
295 | };
296 | 83286D971C7C12AB0083CB19 /* VideoBackgroundSample */ = {
297 | isa = PBXNativeTarget;
298 | buildConfigurationList = 83286DB21C7C12AB0083CB19 /* Build configuration list for PBXNativeTarget "VideoBackgroundSample" */;
299 | buildPhases = (
300 | 2B8D1040C27E112EAB127A01 /* [CP] Check Pods Manifest.lock */,
301 | 83286D941C7C12AB0083CB19 /* Sources */,
302 | 83286D951C7C12AB0083CB19 /* Frameworks */,
303 | 83286D961C7C12AB0083CB19 /* Resources */,
304 | 7640D29C7BA6C6A21E2519FE /* [CP] Embed Pods Frameworks */,
305 | 9CFCFFE18042F2D3E4765098 /* [CP] Copy Pods Resources */,
306 | CF31389B1ED6C59B00702BC8 /* Embed Frameworks */,
307 | );
308 | buildRules = (
309 | );
310 | dependencies = (
311 | CF31389A1ED6C59B00702BC8 /* PBXTargetDependency */,
312 | );
313 | name = VideoBackgroundSample;
314 | productName = VideoBackgroundSample;
315 | productReference = 83286D981C7C12AB0083CB19 /* VideoBackgroundSample.app */;
316 | productType = "com.apple.product-type.application";
317 | };
318 | 83286DAA1C7C12AB0083CB19 /* VideoBackgroundSampleTests */ = {
319 | isa = PBXNativeTarget;
320 | buildConfigurationList = 83286DB51C7C12AB0083CB19 /* Build configuration list for PBXNativeTarget "VideoBackgroundSampleTests" */;
321 | buildPhases = (
322 | 9B73118D4C3EE01CE0EE9D95 /* [CP] Check Pods Manifest.lock */,
323 | 83286DA71C7C12AB0083CB19 /* Sources */,
324 | 83286DA81C7C12AB0083CB19 /* Frameworks */,
325 | 83286DA91C7C12AB0083CB19 /* Resources */,
326 | 6090D9738F5E2103D6ED1EDA /* [CP] Embed Pods Frameworks */,
327 | 6220F535B4AE7843F58BCD1C /* [CP] Copy Pods Resources */,
328 | );
329 | buildRules = (
330 | );
331 | dependencies = (
332 | 83286DAD1C7C12AB0083CB19 /* PBXTargetDependency */,
333 | );
334 | name = VideoBackgroundSampleTests;
335 | productName = VideoBackgroundSampleTests;
336 | productReference = 83286DAB1C7C12AB0083CB19 /* VideoBackgroundSampleTests.xctest */;
337 | productType = "com.apple.product-type.bundle.unit-test";
338 | };
339 | /* End PBXNativeTarget section */
340 |
341 | /* Begin PBXProject section */
342 | 83286D711C7C12670083CB19 /* Project object */ = {
343 | isa = PBXProject;
344 | attributes = {
345 | LastSwiftUpdateCheck = 0720;
346 | LastUpgradeCheck = 1000;
347 | ORGANIZATIONNAME = "Chris Jimenez";
348 | TargetAttributes = {
349 | 83286D791C7C12670083CB19 = {
350 | CreatedOnToolsVersion = 7.2.1;
351 | LastSwiftMigration = 1000;
352 | };
353 | 83286D831C7C12670083CB19 = {
354 | CreatedOnToolsVersion = 7.2.1;
355 | LastSwiftMigration = 1000;
356 | };
357 | 83286D971C7C12AB0083CB19 = {
358 | CreatedOnToolsVersion = 7.2.1;
359 | LastSwiftMigration = 0830;
360 | };
361 | 83286DAA1C7C12AB0083CB19 = {
362 | CreatedOnToolsVersion = 7.2.1;
363 | LastSwiftMigration = 0830;
364 | TestTargetID = 83286D971C7C12AB0083CB19;
365 | };
366 | };
367 | };
368 | buildConfigurationList = 83286D741C7C12670083CB19 /* Build configuration list for PBXProject "VideoBackgroundViewController" */;
369 | compatibilityVersion = "Xcode 3.2";
370 | developmentRegion = English;
371 | hasScannedForEncodings = 0;
372 | knownRegions = (
373 | en,
374 | Base,
375 | );
376 | mainGroup = 83286D701C7C12670083CB19;
377 | productRefGroup = 83286D7B1C7C12670083CB19 /* Products */;
378 | projectDirPath = "";
379 | projectRoot = "";
380 | targets = (
381 | 83286D791C7C12670083CB19 /* VideoBackgroundViewController */,
382 | 83286D831C7C12670083CB19 /* VideoBackgroundViewControllerTests */,
383 | 83286D971C7C12AB0083CB19 /* VideoBackgroundSample */,
384 | 83286DAA1C7C12AB0083CB19 /* VideoBackgroundSampleTests */,
385 | );
386 | };
387 | /* End PBXProject section */
388 |
389 | /* Begin PBXResourcesBuildPhase section */
390 | 83286D781C7C12670083CB19 /* Resources */ = {
391 | isa = PBXResourcesBuildPhase;
392 | buildActionMask = 2147483647;
393 | files = (
394 | );
395 | runOnlyForDeploymentPostprocessing = 0;
396 | };
397 | 83286D821C7C12670083CB19 /* Resources */ = {
398 | isa = PBXResourcesBuildPhase;
399 | buildActionMask = 2147483647;
400 | files = (
401 | );
402 | runOnlyForDeploymentPostprocessing = 0;
403 | };
404 | 83286D961C7C12AB0083CB19 /* Resources */ = {
405 | isa = PBXResourcesBuildPhase;
406 | buildActionMask = 2147483647;
407 | files = (
408 | 837B5EF81C7C2D4B007C81EE /* spotifyVideo.mp4 in Resources */,
409 | 83286DA51C7C12AB0083CB19 /* LaunchScreen.storyboard in Resources */,
410 | 83286DA21C7C12AB0083CB19 /* Assets.xcassets in Resources */,
411 | 83286DA01C7C12AB0083CB19 /* Main.storyboard in Resources */,
412 | );
413 | runOnlyForDeploymentPostprocessing = 0;
414 | };
415 | 83286DA91C7C12AB0083CB19 /* Resources */ = {
416 | isa = PBXResourcesBuildPhase;
417 | buildActionMask = 2147483647;
418 | files = (
419 | );
420 | runOnlyForDeploymentPostprocessing = 0;
421 | };
422 | /* End PBXResourcesBuildPhase section */
423 |
424 | /* Begin PBXShellScriptBuildPhase section */
425 | 2B8D1040C27E112EAB127A01 /* [CP] Check Pods Manifest.lock */ = {
426 | isa = PBXShellScriptBuildPhase;
427 | buildActionMask = 2147483647;
428 | files = (
429 | );
430 | inputPaths = (
431 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
432 | "${PODS_ROOT}/Manifest.lock",
433 | );
434 | name = "[CP] Check Pods Manifest.lock";
435 | outputPaths = (
436 | "$(DERIVED_FILE_DIR)/Pods-VideoBackgroundSample-checkManifestLockResult.txt",
437 | );
438 | runOnlyForDeploymentPostprocessing = 0;
439 | shellPath = /bin/sh;
440 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
441 | showEnvVarsInLog = 0;
442 | };
443 | 3B70F6DA295FB539C7370926 /* [CP] Copy Pods Resources */ = {
444 | isa = PBXShellScriptBuildPhase;
445 | buildActionMask = 2147483647;
446 | files = (
447 | );
448 | inputPaths = (
449 | );
450 | name = "[CP] Copy Pods Resources";
451 | outputPaths = (
452 | );
453 | runOnlyForDeploymentPostprocessing = 0;
454 | shellPath = /bin/sh;
455 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-VideoBackgroundViewController/Pods-VideoBackgroundViewController-resources.sh\"\n";
456 | showEnvVarsInLog = 0;
457 | };
458 | 52D38F2433F9914772365AA6 /* [CP] Check Pods Manifest.lock */ = {
459 | isa = PBXShellScriptBuildPhase;
460 | buildActionMask = 2147483647;
461 | files = (
462 | );
463 | inputPaths = (
464 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
465 | "${PODS_ROOT}/Manifest.lock",
466 | );
467 | name = "[CP] Check Pods Manifest.lock";
468 | outputPaths = (
469 | "$(DERIVED_FILE_DIR)/Pods-VideoBackgroundViewControllerTests-checkManifestLockResult.txt",
470 | );
471 | runOnlyForDeploymentPostprocessing = 0;
472 | shellPath = /bin/sh;
473 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
474 | showEnvVarsInLog = 0;
475 | };
476 | 6090D9738F5E2103D6ED1EDA /* [CP] Embed Pods Frameworks */ = {
477 | isa = PBXShellScriptBuildPhase;
478 | buildActionMask = 2147483647;
479 | files = (
480 | );
481 | inputPaths = (
482 | );
483 | name = "[CP] Embed Pods Frameworks";
484 | outputPaths = (
485 | );
486 | runOnlyForDeploymentPostprocessing = 0;
487 | shellPath = /bin/sh;
488 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-VideoBackgroundSampleTests/Pods-VideoBackgroundSampleTests-frameworks.sh\"\n";
489 | showEnvVarsInLog = 0;
490 | };
491 | 6220F535B4AE7843F58BCD1C /* [CP] Copy Pods Resources */ = {
492 | isa = PBXShellScriptBuildPhase;
493 | buildActionMask = 2147483647;
494 | files = (
495 | );
496 | inputPaths = (
497 | );
498 | name = "[CP] Copy Pods Resources";
499 | outputPaths = (
500 | );
501 | runOnlyForDeploymentPostprocessing = 0;
502 | shellPath = /bin/sh;
503 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-VideoBackgroundSampleTests/Pods-VideoBackgroundSampleTests-resources.sh\"\n";
504 | showEnvVarsInLog = 0;
505 | };
506 | 7640D29C7BA6C6A21E2519FE /* [CP] Embed Pods Frameworks */ = {
507 | isa = PBXShellScriptBuildPhase;
508 | buildActionMask = 2147483647;
509 | files = (
510 | );
511 | inputPaths = (
512 | );
513 | name = "[CP] Embed Pods Frameworks";
514 | outputPaths = (
515 | );
516 | runOnlyForDeploymentPostprocessing = 0;
517 | shellPath = /bin/sh;
518 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-VideoBackgroundSample/Pods-VideoBackgroundSample-frameworks.sh\"\n";
519 | showEnvVarsInLog = 0;
520 | };
521 | 82CD4FDFE1ADC12B1A5B0334 /* [CP] Check Pods Manifest.lock */ = {
522 | isa = PBXShellScriptBuildPhase;
523 | buildActionMask = 2147483647;
524 | files = (
525 | );
526 | inputPaths = (
527 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
528 | "${PODS_ROOT}/Manifest.lock",
529 | );
530 | name = "[CP] Check Pods Manifest.lock";
531 | outputPaths = (
532 | "$(DERIVED_FILE_DIR)/Pods-VideoBackgroundViewController-checkManifestLockResult.txt",
533 | );
534 | runOnlyForDeploymentPostprocessing = 0;
535 | shellPath = /bin/sh;
536 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
537 | showEnvVarsInLog = 0;
538 | };
539 | 9B73118D4C3EE01CE0EE9D95 /* [CP] Check Pods Manifest.lock */ = {
540 | isa = PBXShellScriptBuildPhase;
541 | buildActionMask = 2147483647;
542 | files = (
543 | );
544 | inputPaths = (
545 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
546 | "${PODS_ROOT}/Manifest.lock",
547 | );
548 | name = "[CP] Check Pods Manifest.lock";
549 | outputPaths = (
550 | "$(DERIVED_FILE_DIR)/Pods-VideoBackgroundSampleTests-checkManifestLockResult.txt",
551 | );
552 | runOnlyForDeploymentPostprocessing = 0;
553 | shellPath = /bin/sh;
554 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
555 | showEnvVarsInLog = 0;
556 | };
557 | 9CFCFFE18042F2D3E4765098 /* [CP] Copy Pods Resources */ = {
558 | isa = PBXShellScriptBuildPhase;
559 | buildActionMask = 2147483647;
560 | files = (
561 | );
562 | inputPaths = (
563 | );
564 | name = "[CP] Copy Pods Resources";
565 | outputPaths = (
566 | );
567 | runOnlyForDeploymentPostprocessing = 0;
568 | shellPath = /bin/sh;
569 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-VideoBackgroundSample/Pods-VideoBackgroundSample-resources.sh\"\n";
570 | showEnvVarsInLog = 0;
571 | };
572 | ABF4572A5573DBDD9E7C4F9F /* [CP] Embed Pods Frameworks */ = {
573 | isa = PBXShellScriptBuildPhase;
574 | buildActionMask = 2147483647;
575 | files = (
576 | );
577 | inputPaths = (
578 | "${SRCROOT}/Pods/Target Support Files/Pods-VideoBackgroundViewControllerTests/Pods-VideoBackgroundViewControllerTests-frameworks.sh",
579 | "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework",
580 | "${BUILT_PRODUCTS_DIR}/Quick/Quick.framework",
581 | );
582 | name = "[CP] Embed Pods Frameworks";
583 | outputPaths = (
584 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework",
585 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Quick.framework",
586 | );
587 | runOnlyForDeploymentPostprocessing = 0;
588 | shellPath = /bin/sh;
589 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-VideoBackgroundViewControllerTests/Pods-VideoBackgroundViewControllerTests-frameworks.sh\"\n";
590 | showEnvVarsInLog = 0;
591 | };
592 | B7753C1689C64E3A65AE5229 /* [CP] Copy Pods Resources */ = {
593 | isa = PBXShellScriptBuildPhase;
594 | buildActionMask = 2147483647;
595 | files = (
596 | );
597 | inputPaths = (
598 | );
599 | name = "[CP] Copy Pods Resources";
600 | outputPaths = (
601 | );
602 | runOnlyForDeploymentPostprocessing = 0;
603 | shellPath = /bin/sh;
604 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-VideoBackgroundViewControllerTests/Pods-VideoBackgroundViewControllerTests-resources.sh\"\n";
605 | showEnvVarsInLog = 0;
606 | };
607 | /* End PBXShellScriptBuildPhase section */
608 |
609 | /* Begin PBXSourcesBuildPhase section */
610 | 83286D751C7C12670083CB19 /* Sources */ = {
611 | isa = PBXSourcesBuildPhase;
612 | buildActionMask = 2147483647;
613 | files = (
614 | 83286DB91C7C18610083CB19 /* VideoBackgroundViewController.swift in Sources */,
615 | 83286DBB1C7C1C660083CB19 /* VideoScalingMode.swift in Sources */,
616 | );
617 | runOnlyForDeploymentPostprocessing = 0;
618 | };
619 | 83286D801C7C12670083CB19 /* Sources */ = {
620 | isa = PBXSourcesBuildPhase;
621 | buildActionMask = 2147483647;
622 | files = (
623 | 837B5EF61C7C20E7007C81EE /* VideoBackgroundControllerSpec.swift in Sources */,
624 | );
625 | runOnlyForDeploymentPostprocessing = 0;
626 | };
627 | 83286D941C7C12AB0083CB19 /* Sources */ = {
628 | isa = PBXSourcesBuildPhase;
629 | buildActionMask = 2147483647;
630 | files = (
631 | 83286D9D1C7C12AB0083CB19 /* ViewController.swift in Sources */,
632 | 83286D9B1C7C12AB0083CB19 /* AppDelegate.swift in Sources */,
633 | );
634 | runOnlyForDeploymentPostprocessing = 0;
635 | };
636 | 83286DA71C7C12AB0083CB19 /* Sources */ = {
637 | isa = PBXSourcesBuildPhase;
638 | buildActionMask = 2147483647;
639 | files = (
640 | 83286DB01C7C12AB0083CB19 /* VideoBackgroundSampleTests.swift in Sources */,
641 | );
642 | runOnlyForDeploymentPostprocessing = 0;
643 | };
644 | /* End PBXSourcesBuildPhase section */
645 |
646 | /* Begin PBXTargetDependency section */
647 | 83286D871C7C12670083CB19 /* PBXTargetDependency */ = {
648 | isa = PBXTargetDependency;
649 | target = 83286D791C7C12670083CB19 /* VideoBackgroundViewController */;
650 | targetProxy = 83286D861C7C12670083CB19 /* PBXContainerItemProxy */;
651 | };
652 | 83286DAD1C7C12AB0083CB19 /* PBXTargetDependency */ = {
653 | isa = PBXTargetDependency;
654 | target = 83286D971C7C12AB0083CB19 /* VideoBackgroundSample */;
655 | targetProxy = 83286DAC1C7C12AB0083CB19 /* PBXContainerItemProxy */;
656 | };
657 | CF31389A1ED6C59B00702BC8 /* PBXTargetDependency */ = {
658 | isa = PBXTargetDependency;
659 | target = 83286D791C7C12670083CB19 /* VideoBackgroundViewController */;
660 | targetProxy = CF3138991ED6C59B00702BC8 /* PBXContainerItemProxy */;
661 | };
662 | /* End PBXTargetDependency section */
663 |
664 | /* Begin PBXVariantGroup section */
665 | 83286D9E1C7C12AB0083CB19 /* Main.storyboard */ = {
666 | isa = PBXVariantGroup;
667 | children = (
668 | 83286D9F1C7C12AB0083CB19 /* Base */,
669 | );
670 | name = Main.storyboard;
671 | sourceTree = "";
672 | };
673 | 83286DA31C7C12AB0083CB19 /* LaunchScreen.storyboard */ = {
674 | isa = PBXVariantGroup;
675 | children = (
676 | 83286DA41C7C12AB0083CB19 /* Base */,
677 | );
678 | name = LaunchScreen.storyboard;
679 | sourceTree = "";
680 | };
681 | /* End PBXVariantGroup section */
682 |
683 | /* Begin XCBuildConfiguration section */
684 | 83286D8C1C7C12670083CB19 /* Debug */ = {
685 | isa = XCBuildConfiguration;
686 | buildSettings = {
687 | ALWAYS_SEARCH_USER_PATHS = NO;
688 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
689 | CLANG_CXX_LIBRARY = "libc++";
690 | CLANG_ENABLE_MODULES = YES;
691 | CLANG_ENABLE_OBJC_ARC = YES;
692 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
693 | CLANG_WARN_BOOL_CONVERSION = YES;
694 | CLANG_WARN_COMMA = YES;
695 | CLANG_WARN_CONSTANT_CONVERSION = YES;
696 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
697 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
698 | CLANG_WARN_EMPTY_BODY = YES;
699 | CLANG_WARN_ENUM_CONVERSION = YES;
700 | CLANG_WARN_INFINITE_RECURSION = YES;
701 | CLANG_WARN_INT_CONVERSION = YES;
702 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
703 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
704 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
705 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
706 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
707 | CLANG_WARN_STRICT_PROTOTYPES = YES;
708 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
709 | CLANG_WARN_UNREACHABLE_CODE = YES;
710 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
711 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
712 | COPY_PHASE_STRIP = NO;
713 | CURRENT_PROJECT_VERSION = 1;
714 | DEBUG_INFORMATION_FORMAT = dwarf;
715 | ENABLE_STRICT_OBJC_MSGSEND = YES;
716 | ENABLE_TESTABILITY = YES;
717 | GCC_C_LANGUAGE_STANDARD = gnu99;
718 | GCC_DYNAMIC_NO_PIC = NO;
719 | GCC_NO_COMMON_BLOCKS = YES;
720 | GCC_OPTIMIZATION_LEVEL = 0;
721 | GCC_PREPROCESSOR_DEFINITIONS = (
722 | "DEBUG=1",
723 | "$(inherited)",
724 | );
725 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
726 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
727 | GCC_WARN_UNDECLARED_SELECTOR = YES;
728 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
729 | GCC_WARN_UNUSED_FUNCTION = YES;
730 | GCC_WARN_UNUSED_VARIABLE = YES;
731 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
732 | MTL_ENABLE_DEBUG_INFO = YES;
733 | ONLY_ACTIVE_ARCH = YES;
734 | SDKROOT = iphoneos;
735 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
736 | SWIFT_VERSION = 4.0;
737 | TARGETED_DEVICE_FAMILY = "1,2";
738 | VERSIONING_SYSTEM = "apple-generic";
739 | VERSION_INFO_PREFIX = "";
740 | };
741 | name = Debug;
742 | };
743 | 83286D8D1C7C12670083CB19 /* Release */ = {
744 | isa = XCBuildConfiguration;
745 | buildSettings = {
746 | ALWAYS_SEARCH_USER_PATHS = NO;
747 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
748 | CLANG_CXX_LIBRARY = "libc++";
749 | CLANG_ENABLE_MODULES = YES;
750 | CLANG_ENABLE_OBJC_ARC = YES;
751 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
752 | CLANG_WARN_BOOL_CONVERSION = YES;
753 | CLANG_WARN_COMMA = YES;
754 | CLANG_WARN_CONSTANT_CONVERSION = YES;
755 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
756 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
757 | CLANG_WARN_EMPTY_BODY = YES;
758 | CLANG_WARN_ENUM_CONVERSION = YES;
759 | CLANG_WARN_INFINITE_RECURSION = YES;
760 | CLANG_WARN_INT_CONVERSION = YES;
761 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
762 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
763 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
764 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
765 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
766 | CLANG_WARN_STRICT_PROTOTYPES = YES;
767 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
768 | CLANG_WARN_UNREACHABLE_CODE = YES;
769 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
770 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
771 | COPY_PHASE_STRIP = NO;
772 | CURRENT_PROJECT_VERSION = 1;
773 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
774 | ENABLE_NS_ASSERTIONS = NO;
775 | ENABLE_STRICT_OBJC_MSGSEND = YES;
776 | GCC_C_LANGUAGE_STANDARD = gnu99;
777 | GCC_NO_COMMON_BLOCKS = YES;
778 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
779 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
780 | GCC_WARN_UNDECLARED_SELECTOR = YES;
781 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
782 | GCC_WARN_UNUSED_FUNCTION = YES;
783 | GCC_WARN_UNUSED_VARIABLE = YES;
784 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
785 | MTL_ENABLE_DEBUG_INFO = NO;
786 | SDKROOT = iphoneos;
787 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
788 | SWIFT_VERSION = 4.0;
789 | TARGETED_DEVICE_FAMILY = "1,2";
790 | VALIDATE_PRODUCT = YES;
791 | VERSIONING_SYSTEM = "apple-generic";
792 | VERSION_INFO_PREFIX = "";
793 | };
794 | name = Release;
795 | };
796 | 83286D8F1C7C12670083CB19 /* Debug */ = {
797 | isa = XCBuildConfiguration;
798 | baseConfigurationReference = FCEF73A73E4EF7FDDE4CB730 /* Pods-VideoBackgroundViewController.debug.xcconfig */;
799 | buildSettings = {
800 | CLANG_ENABLE_MODULES = YES;
801 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
802 | DEFINES_MODULE = YES;
803 | DYLIB_COMPATIBILITY_VERSION = 1;
804 | DYLIB_CURRENT_VERSION = 1;
805 | DYLIB_INSTALL_NAME_BASE = "@rpath";
806 | INFOPLIST_FILE = VideoBackgroundViewController/Info.plist;
807 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
808 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
809 | PRODUCT_BUNDLE_IDENTIFIER = com.greenpixels.VideoBackgroundViewController;
810 | PRODUCT_NAME = "$(TARGET_NAME)";
811 | SKIP_INSTALL = YES;
812 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
813 | SWIFT_VERSION = 4.0;
814 | };
815 | name = Debug;
816 | };
817 | 83286D901C7C12670083CB19 /* Release */ = {
818 | isa = XCBuildConfiguration;
819 | baseConfigurationReference = C42A5016E55AAC206157B3EE /* Pods-VideoBackgroundViewController.release.xcconfig */;
820 | buildSettings = {
821 | CLANG_ENABLE_MODULES = YES;
822 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
823 | DEFINES_MODULE = YES;
824 | DYLIB_COMPATIBILITY_VERSION = 1;
825 | DYLIB_CURRENT_VERSION = 1;
826 | DYLIB_INSTALL_NAME_BASE = "@rpath";
827 | INFOPLIST_FILE = VideoBackgroundViewController/Info.plist;
828 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
829 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
830 | PRODUCT_BUNDLE_IDENTIFIER = com.greenpixels.VideoBackgroundViewController;
831 | PRODUCT_NAME = "$(TARGET_NAME)";
832 | SKIP_INSTALL = YES;
833 | SWIFT_VERSION = 4.0;
834 | };
835 | name = Release;
836 | };
837 | 83286D921C7C12670083CB19 /* Debug */ = {
838 | isa = XCBuildConfiguration;
839 | baseConfigurationReference = 2E5029A4A2A75EA9094869B7 /* Pods-VideoBackgroundViewControllerTests.debug.xcconfig */;
840 | buildSettings = {
841 | CLANG_ENABLE_MODULES = YES;
842 | INFOPLIST_FILE = VideoBackgroundViewControllerTests/Info.plist;
843 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
844 | PRODUCT_BUNDLE_IDENTIFIER = com.greenpixels.VideoBackgroundViewControllerTests;
845 | PRODUCT_NAME = "$(TARGET_NAME)";
846 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
847 | SWIFT_VERSION = 4.0;
848 | };
849 | name = Debug;
850 | };
851 | 83286D931C7C12670083CB19 /* Release */ = {
852 | isa = XCBuildConfiguration;
853 | baseConfigurationReference = 73E8AC5742EFADD3CC2F69CF /* Pods-VideoBackgroundViewControllerTests.release.xcconfig */;
854 | buildSettings = {
855 | CLANG_ENABLE_MODULES = YES;
856 | INFOPLIST_FILE = VideoBackgroundViewControllerTests/Info.plist;
857 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
858 | PRODUCT_BUNDLE_IDENTIFIER = com.greenpixels.VideoBackgroundViewControllerTests;
859 | PRODUCT_NAME = "$(TARGET_NAME)";
860 | SWIFT_VERSION = 4.0;
861 | };
862 | name = Release;
863 | };
864 | 83286DB31C7C12AB0083CB19 /* Debug */ = {
865 | isa = XCBuildConfiguration;
866 | baseConfigurationReference = 0CCAD3D7AAF842733FABE151 /* Pods-VideoBackgroundSample.debug.xcconfig */;
867 | buildSettings = {
868 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
869 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
870 | DEVELOPMENT_TEAM = "";
871 | ENABLE_BITCODE = YES;
872 | INFOPLIST_FILE = VideoBackgroundSample/Info.plist;
873 | IPHONEOS_DEPLOYMENT_TARGET = 9.2;
874 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
875 | PRODUCT_BUNDLE_IDENTIFIER = com.greenpixels.VideoBackgroundSample;
876 | PRODUCT_NAME = "$(TARGET_NAME)";
877 | SWIFT_VERSION = 4.0;
878 | };
879 | name = Debug;
880 | };
881 | 83286DB41C7C12AB0083CB19 /* Release */ = {
882 | isa = XCBuildConfiguration;
883 | baseConfigurationReference = FBC78DE0150385128DA4D76E /* Pods-VideoBackgroundSample.release.xcconfig */;
884 | buildSettings = {
885 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
886 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
887 | DEVELOPMENT_TEAM = "";
888 | ENABLE_BITCODE = YES;
889 | INFOPLIST_FILE = VideoBackgroundSample/Info.plist;
890 | IPHONEOS_DEPLOYMENT_TARGET = 9.2;
891 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
892 | PRODUCT_BUNDLE_IDENTIFIER = com.greenpixels.VideoBackgroundSample;
893 | PRODUCT_NAME = "$(TARGET_NAME)";
894 | SWIFT_VERSION = 4.0;
895 | };
896 | name = Release;
897 | };
898 | 83286DB61C7C12AB0083CB19 /* Debug */ = {
899 | isa = XCBuildConfiguration;
900 | baseConfigurationReference = B3AD2E50D1EA27114A2E06B7 /* Pods-VideoBackgroundSampleTests.debug.xcconfig */;
901 | buildSettings = {
902 | BUNDLE_LOADER = "$(TEST_HOST)";
903 | INFOPLIST_FILE = VideoBackgroundSampleTests/Info.plist;
904 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
905 | PRODUCT_BUNDLE_IDENTIFIER = com.greenpixels.VideoBackgroundSampleTests;
906 | PRODUCT_NAME = "$(TARGET_NAME)";
907 | SWIFT_VERSION = 4.0;
908 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VideoBackgroundSample.app/VideoBackgroundSample";
909 | };
910 | name = Debug;
911 | };
912 | 83286DB71C7C12AB0083CB19 /* Release */ = {
913 | isa = XCBuildConfiguration;
914 | baseConfigurationReference = EFA51B51CCDD01F791D09E08 /* Pods-VideoBackgroundSampleTests.release.xcconfig */;
915 | buildSettings = {
916 | BUNDLE_LOADER = "$(TEST_HOST)";
917 | INFOPLIST_FILE = VideoBackgroundSampleTests/Info.plist;
918 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
919 | PRODUCT_BUNDLE_IDENTIFIER = com.greenpixels.VideoBackgroundSampleTests;
920 | PRODUCT_NAME = "$(TARGET_NAME)";
921 | SWIFT_VERSION = 4.0;
922 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VideoBackgroundSample.app/VideoBackgroundSample";
923 | };
924 | name = Release;
925 | };
926 | /* End XCBuildConfiguration section */
927 |
928 | /* Begin XCConfigurationList section */
929 | 83286D741C7C12670083CB19 /* Build configuration list for PBXProject "VideoBackgroundViewController" */ = {
930 | isa = XCConfigurationList;
931 | buildConfigurations = (
932 | 83286D8C1C7C12670083CB19 /* Debug */,
933 | 83286D8D1C7C12670083CB19 /* Release */,
934 | );
935 | defaultConfigurationIsVisible = 0;
936 | defaultConfigurationName = Release;
937 | };
938 | 83286D8E1C7C12670083CB19 /* Build configuration list for PBXNativeTarget "VideoBackgroundViewController" */ = {
939 | isa = XCConfigurationList;
940 | buildConfigurations = (
941 | 83286D8F1C7C12670083CB19 /* Debug */,
942 | 83286D901C7C12670083CB19 /* Release */,
943 | );
944 | defaultConfigurationIsVisible = 0;
945 | defaultConfigurationName = Release;
946 | };
947 | 83286D911C7C12670083CB19 /* Build configuration list for PBXNativeTarget "VideoBackgroundViewControllerTests" */ = {
948 | isa = XCConfigurationList;
949 | buildConfigurations = (
950 | 83286D921C7C12670083CB19 /* Debug */,
951 | 83286D931C7C12670083CB19 /* Release */,
952 | );
953 | defaultConfigurationIsVisible = 0;
954 | defaultConfigurationName = Release;
955 | };
956 | 83286DB21C7C12AB0083CB19 /* Build configuration list for PBXNativeTarget "VideoBackgroundSample" */ = {
957 | isa = XCConfigurationList;
958 | buildConfigurations = (
959 | 83286DB31C7C12AB0083CB19 /* Debug */,
960 | 83286DB41C7C12AB0083CB19 /* Release */,
961 | );
962 | defaultConfigurationIsVisible = 0;
963 | defaultConfigurationName = Release;
964 | };
965 | 83286DB51C7C12AB0083CB19 /* Build configuration list for PBXNativeTarget "VideoBackgroundSampleTests" */ = {
966 | isa = XCConfigurationList;
967 | buildConfigurations = (
968 | 83286DB61C7C12AB0083CB19 /* Debug */,
969 | 83286DB71C7C12AB0083CB19 /* Release */,
970 | );
971 | defaultConfigurationIsVisible = 0;
972 | defaultConfigurationName = Release;
973 | };
974 | /* End XCConfigurationList section */
975 | };
976 | rootObject = 83286D711C7C12670083CB19 /* Project object */;
977 | }
978 |
--------------------------------------------------------------------------------
/VideoBackgroundViewController.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VideoBackgroundViewController.xcodeproj/xcshareddata/xcschemes/VideoBackgroundViewController.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
34 |
40 |
41 |
42 |
43 |
44 |
50 |
51 |
52 |
53 |
54 |
55 |
65 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
83 |
84 |
90 |
91 |
92 |
93 |
95 |
96 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/VideoBackgroundViewController.xcodeproj/xcuserdata/chris.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | VideoBackgroundSample.xcscheme
8 |
9 | orderHint
10 | 7
11 |
12 | VideoBackgroundViewController.xcscheme_^#shared#^_
13 |
14 | orderHint
15 | 0
16 |
17 |
18 | SuppressBuildableAutocreation
19 |
20 | 83286D791C7C12670083CB19
21 |
22 | primary
23 |
24 |
25 | 83286D831C7C12670083CB19
26 |
27 | primary
28 |
29 |
30 | 83286D971C7C12AB0083CB19
31 |
32 | primary
33 |
34 |
35 | 83286DAA1C7C12AB0083CB19
36 |
37 | primary
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/VideoBackgroundViewController.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/VideoBackgroundViewController.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/VideoBackgroundViewController/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 0.0.6
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/VideoBackgroundViewController/VideoBackgroundViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // VideoBackgroundViewController.h
3 | // VideoBackgroundViewController
4 | //
5 | // Created by Chris Jimenez on 2/22/16.
6 | // Copyright © 2016 Chris Jimenez. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | //! Project version number for VideoBackgroundViewController.
12 | FOUNDATION_EXPORT double VideoBackgroundViewControllerVersionNumber;
13 |
14 | //! Project version string for VideoBackgroundViewController.
15 | FOUNDATION_EXPORT const unsigned char VideoBackgroundViewControllerVersionString[];
16 |
17 | // In this header, you should import all the public headers of your framework using statements like #import
18 |
19 |
20 |
--------------------------------------------------------------------------------
/VideoBackgroundViewController/VideoBackgroundViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // VideoBackgroundViewController.swift
3 | // VideoBackgroundViewController
4 | //
5 | // Created by Chris Jimenez on 2/22/16.
6 | // Copyright © 2016 Chris Jimenez. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 | import MediaPlayer
12 | import AVKit
13 |
14 | /// Class that shows a video in the backgroun of the view controller
15 | open class VideoBackgroundViewController: UIViewController {
16 |
17 | /// The video player to use for the video in the background
18 | public let videoPlayer: AVPlayerViewController = AVPlayerViewController()
19 | // The sound level of hte video
20 | open var soundLevel: Float = 1.0
21 | // If the video should have sound or not
22 | open var playSound: Bool = true {
23 |
24 | didSet{
25 | if playSound {
26 | soundLevel = 1.0
27 | }
28 | else {
29 | soundLevel = 0.0
30 | }
31 | }
32 | }
33 |
34 | //The URL of the video to play
35 | open var videoURL: URL! {
36 |
37 | didSet{
38 |
39 | videoPlayer.player = AVPlayer(url: videoURL)
40 | videoPlayer.player?.volume = self.soundLevel
41 | videoPlayer.player?.play()
42 |
43 | }
44 | }
45 |
46 | /// Alpha to apply to the video
47 | open var alpha: CGFloat = CGFloat(1.0) {
48 | didSet {
49 | videoPlayer.view.alpha = alpha
50 | }
51 | }
52 |
53 |
54 | /// If the video will loop or not
55 | open var videoShouldLoop: Bool = true {
56 |
57 | didSet {
58 | if videoShouldLoop {
59 | NotificationCenter.default.addObserver(self,
60 | selector: #selector(VideoBackgroundViewController.videoPlayerItemDidReachEnd),
61 | name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
62 | object: videoPlayer.player?.currentItem)
63 | }
64 | }
65 | }
66 |
67 | /**
68 | Gets trigger when the video goes to the end,
69 | */
70 | @objc func videoPlayerItemDidReachEnd() {
71 | videoPlayer.player?.seek(to: kCMTimeZero)
72 | videoPlayer.player?.play()
73 | }
74 |
75 | /// The aspect scaling mode of the video, defaults to ResizeAspectFill
76 | open var videoScalingMode: VideoScalingMode = .resizeAspectFill {
77 | didSet {
78 | switch videoScalingMode {
79 | case .resize:
80 | videoPlayer.videoGravity = convertToAVLayerVideoGravity(AVLayerVideoGravity.resize.rawValue).rawValue
81 | case .resizeAspect:
82 | videoPlayer.videoGravity = convertToAVLayerVideoGravity(AVLayerVideoGravity.resizeAspect.rawValue).rawValue
83 | case .resizeAspectFill:
84 | videoPlayer.videoGravity = convertToAVLayerVideoGravity(AVLayerVideoGravity.resizeAspectFill.rawValue).rawValue
85 | }
86 | }
87 | }
88 |
89 |
90 | /// The frame size of the video
91 | open var videoFrame: CGRect = CGRect()
92 |
93 | //The background color of the video
94 | open var backgroundColor: UIColor = UIColor.black {
95 | didSet {
96 | view.backgroundColor = backgroundColor
97 | }
98 | }
99 |
100 | override open func viewDidLoad() {
101 | super.viewDidLoad()
102 |
103 | videoFrame = view.frame
104 | self.videoShouldLoop = true
105 | self.alpha = 0.8
106 | self.playSound = false
107 | self.videoScalingMode = .resizeAspectFill
108 |
109 |
110 | }
111 |
112 |
113 | /**
114 | Delegate when the view will appear
115 |
116 | - parameter animated: It it appears animated or not
117 | */
118 | override open func viewDidAppear(_ animated: Bool) {
119 | super.viewDidAppear(animated)
120 | //Sets the frame
121 | videoPlayer.view.frame = videoFrame
122 | //Hides the playback controls
123 | videoPlayer.showsPlaybackControls = false
124 | //Adds the video as a subview
125 | view.addSubview(videoPlayer.view)
126 | //Sends it to the back
127 | view.sendSubview(toBack: videoPlayer.view)
128 | }
129 |
130 |
131 | //Removes the observer
132 | deinit{
133 | NotificationCenter.default.removeObserver(self)
134 | }
135 |
136 |
137 |
138 | }
139 |
140 | // Helper function inserted by Swift 4.2 migrator.
141 | fileprivate func convertToAVLayerVideoGravity(_ input: String) -> AVLayerVideoGravity {
142 | return AVLayerVideoGravity(rawValue: input)
143 | }
144 |
--------------------------------------------------------------------------------
/VideoBackgroundViewController/VideoScalingMode.swift:
--------------------------------------------------------------------------------
1 | //
2 | // VideoFillMode.swift
3 | // VideoBackgroundViewController
4 | //
5 | // Created by Chris Jimenez on 2/22/16.
6 | // Copyright © 2016 Chris Jimenez. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 |
12 | /**
13 | Enum for the scaling mode of the video view controller
14 |
15 | - Resize: Resize to fit
16 | - ResizeAspect: Resize an mantain aspect
17 | - ResizeAspectFill: Resize and fill
18 | */
19 | public enum VideoScalingMode {
20 | case resize
21 | case resizeAspect
22 | case resizeAspectFill
23 | }
24 |
--------------------------------------------------------------------------------
/VideoBackgroundViewControllerTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/VideoBackgroundViewControllerTests/VideoBackgroundControllerSpec.swift:
--------------------------------------------------------------------------------
1 | //
2 | // VideoBackgroundControllerSpec.swift
3 | // VideoBackgroundViewController
4 | //
5 | // Created by Chris Jimenez on 2/22/16.
6 | // Copyright © 2016 Chris Jimenez. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import VideoBackgroundViewController
11 | import Quick
12 | import Nimble
13 |
14 |
15 | //Specs for the delayer class
16 | class VideoBackgroundControllerSpec: QuickSpec {
17 |
18 | override func spec() {
19 |
20 | let videoBackgroundViewController = VideoBackgroundViewController()
21 |
22 | it("is correct with initial values"){
23 |
24 | videoBackgroundViewController.videoShouldLoop = true
25 | videoBackgroundViewController.alpha = 0.8
26 | videoBackgroundViewController.playSound = false
27 | videoBackgroundViewController.videoScalingMode = .resizeAspectFill
28 | videoBackgroundViewController.videoURL = URL(fileURLWithPath: "")
29 | videoBackgroundViewController.backgroundColor = UIColor.black
30 |
31 | expect(videoBackgroundViewController.videoPlayer).notTo(beNil())
32 | expect(videoBackgroundViewController.soundLevel).to(equal(0.0))
33 | expect(videoBackgroundViewController.playSound).to(beFalse())
34 | expect(videoBackgroundViewController.videoShouldLoop).to(beTrue())
35 | expect(videoBackgroundViewController.backgroundColor).to(equal(UIColor.black))
36 | }
37 |
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/Web/videoBackgroundViewController.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PiXeL16/VideoBackgroundViewController/1876ae08fc6bb45e3359005a4da07f0381219acb/Web/videoBackgroundViewController.gif
--------------------------------------------------------------------------------
/Web/videoBackgroundViewControllerBanner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PiXeL16/VideoBackgroundViewController/1876ae08fc6bb45e3359005a4da07f0381219acb/Web/videoBackgroundViewControllerBanner.png
--------------------------------------------------------------------------------