├── .swift-version
├── Image
├── demo1.gif
├── demo2.gif
└── logo.jpeg
├── .travis.yml
├── useCases
├── withCocoaPod
│ ├── Podfile
│ ├── Podfile.lock
│ ├── SummerSliderDemo.xcodeproj
│ │ ├── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ ├── xcshareddata
│ │ │ └── xcschemes
│ │ │ │ └── SummerSliderDemo.xcscheme
│ │ └── project.pbxproj
│ └── SummerSlider
│ │ ├── ViewController.swift
│ │ ├── Images.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── VerticalViewController.swift
│ │ ├── YoutubeStyleViewController.swift
│ │ ├── Info.plist
│ │ ├── AppDelegate.swift
│ │ ├── HorizontalViewController.swift
│ │ └── Base.lproj
│ │ ├── LaunchScreen.xib
│ │ └── Main.storyboard
└── vastExample
│ ├── Podfile
│ ├── vastExample.xcodeproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── project.pbxproj
│ ├── Podfile.lock
│ └── vastExample
│ ├── ViewController.swift
│ ├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
│ ├── Info.plist
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── AppDelegate.swift
│ └── PlayerViewController.swift
├── SummerSlider.xcodeproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── project.pbxproj
├── SummerSlider
├── SummerSliderTypes.swift
├── Constants.swift
├── Slider.swift
├── VerticalSlider.swift
├── SliderFactory.swift
├── SummerSlider.h
├── SliderDrawingProtocol.swift
├── Info.plist
├── SummerSlider.swift
└── HorizontalSlider.swift
├── SummerSlider.podspec
├── SummerSliderDemo
├── VerticalViewController.swift
├── YoutubeStyleViewController.swift
├── Info.plist
├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── AppDelegate.swift
└── HorizontalViewController.swift
├── LICENSE
├── .gitignore
└── README.md
/.swift-version:
--------------------------------------------------------------------------------
1 | 3.0
2 |
--------------------------------------------------------------------------------
/Image/demo1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/superbderrick/SummerSlider/HEAD/Image/demo1.gif
--------------------------------------------------------------------------------
/Image/demo2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/superbderrick/SummerSlider/HEAD/Image/demo2.gif
--------------------------------------------------------------------------------
/Image/logo.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/superbderrick/SummerSlider/HEAD/Image/logo.jpeg
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: objective-c
2 | osx_image: xcode11
3 | script:
4 | - xcodebuild
5 |
6 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/Podfile:
--------------------------------------------------------------------------------
1 | use_frameworks!
2 |
3 | target 'SummerSliderDemo' do
4 | pod 'SummerSlider', '~>0.3.0'
5 |
6 |
7 | end
8 |
--------------------------------------------------------------------------------
/useCases/vastExample/Podfile:
--------------------------------------------------------------------------------
1 | use_frameworks!
2 | platform :ios, '9.0'
3 |
4 | target 'vastExample' do
5 | pod 'SummerSlider', '~>0.3.0'
6 | pod 'GoogleAds-IMA-iOS-SDK', '~> 3.6'
7 |
8 | end
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/SummerSlider.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/useCases/vastExample/vastExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - SummerSlider (0.3.0)
3 |
4 | DEPENDENCIES:
5 | - SummerSlider (~> 0.3.0)
6 |
7 | SPEC CHECKSUMS:
8 | SummerSlider: a867d766a34fa21a85139a87f8ff83473065004f
9 |
10 | PODFILE CHECKSUM: 93f6dfba7bc87fddb64d5802b33e9e7d98f35530
11 |
12 | COCOAPODS: 1.3.1
13 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSliderDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/SummerSlider.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/useCases/vastExample/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - GoogleAds-IMA-iOS-SDK (3.6.0)
3 | - SummerSlider (0.3.0)
4 |
5 | DEPENDENCIES:
6 | - GoogleAds-IMA-iOS-SDK (~> 3.6)
7 | - SummerSlider (~> 0.3.0)
8 |
9 | SPEC CHECKSUMS:
10 | GoogleAds-IMA-iOS-SDK: 193ca918ed33278c29c96683f500524bf788d509
11 | SummerSlider: a867d766a34fa21a85139a87f8ff83473065004f
12 |
13 | PODFILE CHECKSUM: 3fbab00c71c5d479f5cd1a98c7b3e1c5071a4daa
14 |
15 | COCOAPODS: 1.3.1
16 |
--------------------------------------------------------------------------------
/SummerSlider/SummerSliderTypes.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SummerSliderTypes.swift
3 | // SummerSlider
4 | //
5 | // Created by derrick on 25/09/2017.
6 | // Copyright © 2017 SuperbDerrick. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 |
12 | public enum DrawingMode {
13 | case BothSides
14 | case UnselectedOnly
15 | case SelectedOnly
16 | case WithoutMarks
17 | }
18 |
19 | public enum SliderStyle {
20 | case Horizontal
21 | case Vertical
22 | }
23 |
--------------------------------------------------------------------------------
/SummerSlider/Constants.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Constants.swift
3 | // SummerSliderSample
4 | //
5 | // Created by Kang Jinyeoung on 03/09/2017.
6 | // Copyright © 2017 Sensation. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | struct Constants {
12 | struct INNER_RECT {
13 | static let X : CGFloat = 1.0
14 | static let Y : CGFloat = 10.0
15 | }
16 |
17 | struct SLIDER {
18 | static let WHOLE_PERCENT : CGFloat = 100.0
19 | }
20 |
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/SummerSlider/Slider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Slider.swift
3 | // SummerSlider
4 | //
5 | // Created by derrick on 26/09/2017.
6 | // Copyright © 2017 SuperbDerrick. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct Slider{
12 | var iMarkColor : UIColor
13 | var iSelectedBarColor : UIColor
14 | var iUnSelectedBarColor : UIColor
15 | var iMarkWidth : Float
16 | var iMarkPositions : Array
17 | var iDrawingMode : DrawingMode
18 | var style: SliderStyle
19 | }
20 |
21 |
--------------------------------------------------------------------------------
/SummerSlider/VerticalSlider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Sliders.swift
3 | // SummerSlider
4 | //
5 | // Created by derrick on 26/09/2017.
6 | // Copyright © 2017 SuperbDerrick. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 |
12 | struct VerticalSlider: SliderDrawingProtocol{
13 | var slider: Slider
14 |
15 | init(slider: Slider){
16 | self.slider = slider
17 | }
18 |
19 | func getDrawingImage(rect: CGRect) -> (UIImage,UIImage) {
20 | return (UIImage(),UIImage())
21 | }
22 |
23 | }
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/SummerSlider/SliderFactory.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SliderFactory.swift
3 | // SummerSlider
4 | //
5 | // Created by derrick on 26/09/2017.
6 | // Copyright © 2017 SuperbDerrick. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 |
12 | struct SliderFactory{
13 | static func getSlider(slider: Slider)->SliderDrawingProtocol {
14 | switch slider.style {
15 | case .Horizontal:
16 | return HorizontalSlider(slider: slider)
17 | case .Vertical:
18 | return VerticalSlider(slider: slider)
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/SummerSlider/SummerSlider.h:
--------------------------------------------------------------------------------
1 | //
2 | // SummerSlider.h
3 | // SummerSlider
4 | //
5 | // Created by Kang Jinyeoung on 24/09/2017.
6 | // Copyright © 2017 SuperbDerrick. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | //! Project version number for SummerSlider.
12 | FOUNDATION_EXPORT double SummerSliderVersionNumber;
13 |
14 | //! Project version string for SummerSlider.
15 | FOUNDATION_EXPORT const unsigned char SummerSliderVersionString[];
16 |
17 | // In this header, you should import all the public headers of your framework using statements like #import
18 |
19 |
20 |
--------------------------------------------------------------------------------
/SummerSlider/SliderDrawingProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SliderDrawingProtocol.swift
3 | // SummerSlider
4 | //
5 | // Created by derrick on 26/09/2017.
6 | // Copyright © 2017 SuperbDerrick. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol SliderDrawingProtocol {
12 | func getDrawingImage(rect : CGRect)->(UIImage,UIImage)
13 | }
14 |
15 | protocol DrawAPIProtocol {
16 | func drawMarks(_ context:CGContext ,_ innerRect : CGRect , _ markColor:CGColor ,_ marks:Array! ,_ markWidth:Float)->Void
17 | func drawRect(_ context:CGContext ,_ innerRect : CGRect , _ rectColr:CGColor)->Void
18 | }
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/SummerSlider.podspec:
--------------------------------------------------------------------------------
1 |
2 | Pod::Spec.new do |s|
3 | s.name = 'SummerSlider'
4 | s.version = '0.3.0'
5 | s.summary = 'Custom UISlider library '
6 | s.description = <<-DESC
7 | TODO: The iOS Custom Slider library that can distinguish the parts where the advertisement of the video player comes out.
8 | DESC
9 |
10 | s.homepage = 'https://github.com/superbderrick/SummerSlider'
11 | s.license = { :type => 'MIT', :file => 'LICENSE' }
12 | s.author = { 'SuperbDerrick' => 'kang.derrick@gmail.com' }
13 | s.source = { :git => 'https://github.com/superbderrick/SummerSlider.git', :tag => s.version.to_s }
14 |
15 | s.ios.deployment_target = '8.0'
16 | s.source_files = 'SummerSlider/*.swift'
17 |
18 |
19 | end
20 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSlider/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // SummerSlider
4 | //
5 | // Created by kang.derrick@gmail.com on 09/09/2017.
6 | // Copyright (c) 2017 kang.derrick@gmail.com. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import SummerSlider
11 |
12 | class ViewController: UIViewController {
13 |
14 | var testSlider1:SummerSlider!
15 | var testSlider2:SummerSlider!
16 | var testSlider3:SummerSlider!
17 | var testSlider4:SummerSlider!
18 | var testSlider5:SummerSlider!
19 |
20 | override func viewDidLoad() {
21 | super.viewDidLoad()
22 |
23 |
24 |
25 | }
26 |
27 | override func didReceiveMemoryWarning() {
28 | super.didReceiveMemoryWarning()
29 | // Dispose of any resources that can be recreated.
30 | }
31 |
32 | }
33 |
34 |
--------------------------------------------------------------------------------
/SummerSlider/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 | 1.0
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | NSPrincipalClass
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/useCases/vastExample/vastExample/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // vastExample
4 | //
5 | // Created by Kang Jinyeoung on 10/09/2017.
6 | // Copyright © 2017 SuperbDerrick. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 |
12 | class ViewController: UIViewController {
13 |
14 |
15 |
16 | override func viewDidLoad() {
17 | super.viewDidLoad()
18 | // Do any additional setup after loading the view, typically from a nib.
19 | }
20 |
21 | override func didReceiveMemoryWarning() {
22 | super.didReceiveMemoryWarning()
23 | // Dispose of any resources that can be recreated.
24 | }
25 |
26 | @IBAction func playVideo(_ sender: Any) {
27 |
28 | let signUpVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "playerController")
29 | self.navigationController?.pushViewController(signUpVC, animated: true)
30 | }
31 |
32 | }
33 |
34 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSlider/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | }
43 | ],
44 | "info" : {
45 | "version" : 1,
46 | "author" : "xcode"
47 | }
48 | }
--------------------------------------------------------------------------------
/SummerSliderDemo/VerticalViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // VerticalViewController.swift
3 | // SummerSlider
4 | //
5 | // Created by Kang Jinyeoung on 24/09/2017.
6 | // Copyright © 2017 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class VerticalViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 | }
18 |
19 | override func didReceiveMemoryWarning() {
20 | super.didReceiveMemoryWarning()
21 | // Dispose of any resources that can be recreated.
22 | }
23 |
24 |
25 | /*
26 | // MARK: - Navigation
27 |
28 | // In a storyboard-based application, you will often want to do a little preparation before navigation
29 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
30 | // Get the new view controller using segue.destinationViewController.
31 | // Pass the selected object to the new view controller.
32 | }
33 | */
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/SummerSliderDemo/YoutubeStyleViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // YoutubeStyleViewController.swift
3 | // SummerSlider
4 | //
5 | // Created by Kang Jinyeoung on 24/09/2017.
6 | // Copyright © 2017 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class YoutubeStyleViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 | }
18 |
19 | override func didReceiveMemoryWarning() {
20 | super.didReceiveMemoryWarning()
21 | // Dispose of any resources that can be recreated.
22 | }
23 |
24 |
25 | /*
26 | // MARK: - Navigation
27 |
28 | // In a storyboard-based application, you will often want to do a little preparation before navigation
29 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
30 | // Get the new view controller using segue.destinationViewController.
31 | // Pass the selected object to the new view controller.
32 | }
33 | */
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSlider/VerticalViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // VerticalViewController.swift
3 | // SummerSlider
4 | //
5 | // Created by Kang Jinyeoung on 24/09/2017.
6 | // Copyright © 2017 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class VerticalViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 | }
18 |
19 | override func didReceiveMemoryWarning() {
20 | super.didReceiveMemoryWarning()
21 | // Dispose of any resources that can be recreated.
22 | }
23 |
24 |
25 | /*
26 | // MARK: - Navigation
27 |
28 | // In a storyboard-based application, you will often want to do a little preparation before navigation
29 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
30 | // Get the new view controller using segue.destinationViewController.
31 | // Pass the selected object to the new view controller.
32 | }
33 | */
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSlider/YoutubeStyleViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // YoutubeStyleViewController.swift
3 | // SummerSlider
4 | //
5 | // Created by Kang Jinyeoung on 24/09/2017.
6 | // Copyright © 2017 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class YoutubeStyleViewController: UIViewController {
12 |
13 | override func viewDidLoad() {
14 | super.viewDidLoad()
15 |
16 | // Do any additional setup after loading the view.
17 | }
18 |
19 | override func didReceiveMemoryWarning() {
20 | super.didReceiveMemoryWarning()
21 | // Dispose of any resources that can be recreated.
22 | }
23 |
24 |
25 | /*
26 | // MARK: - Navigation
27 |
28 | // In a storyboard-based application, you will often want to do a little preparation before navigation
29 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
30 | // Get the new view controller using segue.destinationViewController.
31 | // Pass the selected object to the new view controller.
32 | }
33 | */
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2017 kang.derrick@gmail.com
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSlider/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 | 1.0
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 | UIInterfaceOrientationLandscapeLeft
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/useCases/vastExample/vastExample/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 | "info" : {
65 | "version" : 1,
66 | "author" : "xcode"
67 | }
68 | }
--------------------------------------------------------------------------------
/SummerSliderDemo/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 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIMainStoryboardFile
26 | Main
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationLandscapeLeft
34 | UIInterfaceOrientationLandscapeRight
35 |
36 | UISupportedInterfaceOrientations~ipad
37 |
38 | UIInterfaceOrientationPortrait
39 | UIInterfaceOrientationPortraitUpsideDown
40 | UIInterfaceOrientationLandscapeLeft
41 | UIInterfaceOrientationLandscapeRight
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/useCases/vastExample/vastExample/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 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSApplicationCategoryType
22 |
23 | LSRequiresIPhoneOS
24 |
25 | NSAppTransportSecurity
26 |
27 | NSAllowsArbitraryLoads
28 |
29 |
30 | UILaunchStoryboardName
31 | LaunchScreen
32 | UIMainStoryboardFile
33 | Main
34 | UIRequiredDeviceCapabilities
35 |
36 | armv7
37 |
38 | UISupportedInterfaceOrientations
39 |
40 | UIInterfaceOrientationPortrait
41 |
42 | UISupportedInterfaceOrientations~ipad
43 |
44 | UIInterfaceOrientationPortrait
45 | UIInterfaceOrientationPortraitUpsideDown
46 | UIInterfaceOrientationLandscapeLeft
47 | UIInterfaceOrientationLandscapeRight
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/.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 | *.moved-aside
22 | *.xccheckout
23 | *.xcscmblueprint
24 |
25 | ## Obj-C/Swift specific
26 | *.hmap
27 | *.ipa
28 | *.dSYM.zip
29 | *.dSYM
30 |
31 | ## Playgrounds
32 | timeline.xctimeline
33 | playground.xcworkspace
34 |
35 | # Swift Package Manager
36 | #
37 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
38 | # Packages/
39 | # Package.pins
40 | .build/
41 |
42 | # CocoaPods
43 | #
44 | # We recommend against adding the Pods directory to your .gitignore. However
45 | # you should judge for yourself, the pros and cons are mentioned at:
46 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
47 | #
48 | # Pods/
49 |
50 | # Carthage
51 | #
52 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
53 | # Carthage/Checkouts
54 |
55 | Carthage/Build
56 |
57 | # fastlane
58 | #
59 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
60 | # screenshots whenever they are needed.
61 | # For more information about the recommended setup visit:
62 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
63 |
64 | fastlane/report.xml
65 | fastlane/Preview.html
66 | fastlane/screenshots
67 | fastlane/test_output
68 |
--------------------------------------------------------------------------------
/SummerSliderDemo/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 |
--------------------------------------------------------------------------------
/useCases/vastExample/vastExample/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 |
--------------------------------------------------------------------------------
/SummerSliderDemo/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | }
88 | ],
89 | "info" : {
90 | "version" : 1,
91 | "author" : "xcode"
92 | }
93 | }
--------------------------------------------------------------------------------
/SummerSliderDemo/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // SummerSliderDemo
4 | //
5 | // Created by Kang Jinyeoung on 24/09/2017.
6 | // Copyright © 2017 SuperbDerrick. 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: [UIApplication.LaunchOptionsKey: 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 invalidate graphics rendering callbacks. 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 active 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 |
--------------------------------------------------------------------------------
/useCases/vastExample/vastExample/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // vastExample
4 | //
5 | // Created by Kang Jinyeoung on 10/09/2017.
6 | // Copyright © 2017 SuperbDerrick. 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 invalidate graphics rendering callbacks. 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 active 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 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSlider/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // SummerSlider
4 | //
5 | // Created by kang.derrick@gmail.com on 09/09/2017.
6 | // Copyright (c) 2017 kang.derrick@gmail.com. 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 |
--------------------------------------------------------------------------------
/SummerSlider/SummerSlider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SummerSlider.swift
3 | // SummerSliderSample
4 | //
5 | // Created by derrick on 30/08/2017.
6 | // Copyright © 2017 Sensation. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | @IBDesignable public class SummerSlider: UISlider {
12 |
13 | @IBInspectable public var markColor : UIColor!
14 | @IBInspectable public var markPositions : Array!
15 | @IBInspectable public var selectedBarColor : UIColor!
16 | @IBInspectable public var unselectedBarColor : UIColor!
17 |
18 | public var markWidth : Float!
19 | public var drawingMode : DrawingMode!
20 |
21 | public override init(frame: CGRect) {
22 | super.init(frame: frame)
23 |
24 | self.setupDefaultValues()
25 | }
26 |
27 | required public init?(coder aDecoder: NSCoder) {
28 | super.init(coder: aDecoder)
29 | self.setupDefaultValues()
30 | }
31 |
32 | public func reDraw() {
33 | self.setNeedsDisplay()
34 | }
35 |
36 | override public func draw(_ rect: CGRect) {
37 | super.draw(rect)
38 |
39 | var sliders = [Slider]()
40 |
41 | sliders.append(Slider(iMarkColor: self.markColor , iSelectedBarColor: self.selectedBarColor , iUnSelectedBarColor: self.unselectedBarColor , iMarkWidth: self.markWidth , iMarkPositions: self.markPositions , iDrawingMode: self.drawingMode , style: SliderStyle.Horizontal))
42 |
43 | sliders.append(Slider(iMarkColor: self.markColor , iSelectedBarColor: self.selectedBarColor , iUnSelectedBarColor: self.unselectedBarColor , iMarkWidth: self.markWidth , iMarkPositions: self.markPositions , iDrawingMode: self.drawingMode , style: SliderStyle.Vertical))
44 |
45 | let horizontalSlider = SliderFactory.getSlider(slider: sliders[0])
46 |
47 | let Image = horizontalSlider.getDrawingImage(rect: rect)
48 |
49 | setupTrackRange(Image.0, Image.1)
50 | }
51 |
52 | private func setupDefaultValues(){
53 | self.markColor = UIColor.white
54 | self.markWidth = 1.0
55 | self.selectedBarColor = UIColor.white
56 | self.unselectedBarColor = UIColor.black
57 | self.markPositions = Array()
58 |
59 | self.drawingMode = DrawingMode.BothSides
60 | }
61 |
62 | private func setupTrackRange(_ selectedStripSide:UIImage , _ unselectedStripSide:UIImage) {
63 | self.setMinimumTrackImage(selectedStripSide, for: UIControl.State.normal)
64 | self.setMaximumTrackImage(unselectedStripSide, for: UIControl.State.normal)
65 | }
66 |
67 | }
68 |
--------------------------------------------------------------------------------
/SummerSliderDemo/HorizontalViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HorizontalViewController.swift
3 | // SummerSlider
4 | //
5 | // Created by Kang Jinyeoung on 24/09/2017.
6 | // Copyright © 2017 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import SummerSlider
11 | class HorizontalViewController: UIViewController {
12 |
13 |
14 | var testSlider1:SummerSlider!
15 | var testSlider2:SummerSlider!
16 | var testSlider3:SummerSlider!
17 |
18 | let testRect1 = CGRect(x:30 ,y:70 , width:300 , height:30)
19 | let testRect2 = CGRect(x:30 ,y:120 , width:300 , height:30)
20 | let testRect3 = CGRect(x:30 ,y:170 , width:300 , height:30)
21 |
22 | @IBOutlet weak var testSlider4: SummerSlider!
23 | @IBOutlet weak var testSlider5: SummerSlider!
24 | @IBOutlet weak var testSlider6: SummerSlider!
25 |
26 |
27 | override func viewDidLoad() {
28 | super.viewDidLoad()
29 |
30 | var marksArray1 = Array()
31 | marksArray1 = [0,10,20,30,40,50,60,70,80,90,100]
32 | testSlider1 = SummerSlider(frame: testRect1)
33 | testSlider1.selectedBarColor = UIColor.blue
34 | testSlider1.unselectedBarColor = UIColor.red
35 | testSlider1.markColor = UIColor.yellow
36 | testSlider1.markWidth = 2.0
37 | testSlider1.markPositions = marksArray1
38 |
39 |
40 | var marksArray2 = Array()
41 | marksArray2 = [10.0,15.0,23.0,67.0,71.0]
42 | testSlider2 = SummerSlider(frame: testRect2)
43 | testSlider2.selectedBarColor = UIColor(red:138/255.0 ,green:255/255.0 ,blue:0/255 ,alpha:1.0)
44 | testSlider2.unselectedBarColor = UIColor(red:108/255.0 ,green:200/255.0 ,blue:0/255.0 ,alpha:1.0)
45 | testSlider2.markColor = UIColor.red
46 | testSlider2.markWidth = 1.0
47 | testSlider2.markPositions = marksArray2
48 |
49 | testSlider3 = SummerSlider(frame: testRect3)
50 |
51 | var marksArray3 = Array()
52 | marksArray3 = [20.0,15.0,23.0,67.0, 90.0]
53 | testSlider3 = SummerSlider(frame: testRect3)
54 | testSlider3.selectedBarColor = UIColor.blue
55 | testSlider3.unselectedBarColor = UIColor(red:20/255.0 ,green:40/255.0 ,blue:0/255.0 ,alpha:1.0)
56 | testSlider3.markColor = UIColor.gray
57 | testSlider3.markWidth = 10.0
58 | testSlider3.markPositions = marksArray3
59 |
60 |
61 | self.view.addSubview(testSlider1)
62 | self.view.addSubview(testSlider2)
63 | self.view.addSubview(testSlider3)
64 |
65 |
66 | var marksArray4 = Array()
67 | marksArray4 = [0.0,25.0,90.0]
68 | testSlider4.markPositions = marksArray4
69 |
70 | var marksArray5 = Array()
71 | marksArray5 = [10.0,20.0,30.0,80,90.0]
72 | testSlider5.markPositions = marksArray5
73 |
74 | var marksArray6 = Array()
75 | marksArray6 = [0,12,23,34,45,56,77,99]
76 | testSlider6.selectedBarColor = UIColor.white
77 | testSlider6.unselectedBarColor = UIColor.black
78 | testSlider6.markColor = UIColor.orange
79 | testSlider6.markWidth = 6.0
80 | testSlider6.markPositions = marksArray6
81 |
82 |
83 | }
84 |
85 |
86 |
87 | }
88 |
--------------------------------------------------------------------------------
/SummerSlider/HorizontalSlider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Sliders.swift
3 | // SummerSlider
4 | //
5 | // Created by derrick on 26/09/2017.
6 | // Copyright © 2017 SuperbDerrick. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 |
12 | struct HorizontalSlider: SliderDrawingProtocol , DrawAPIProtocol{
13 |
14 | var slider: Slider
15 |
16 | init(slider: Slider){
17 | self.slider = slider
18 | }
19 |
20 | func getDrawingImage(rect : CGRect) -> (UIImage,UIImage) {
21 |
22 | // Basic Setup to make a Inner Rect.
23 | let innerRect = rect.insetBy(dx: Constants.INNER_RECT.X, dy: Constants.INNER_RECT.Y)
24 | UIGraphicsBeginImageContextWithOptions(innerRect.size ,false , 0)
25 | let context = UIGraphicsGetCurrentContext()!
26 |
27 | // Draw Selection Rect.
28 | drawRect(context, innerRect , slider.iSelectedBarColor.cgColor)
29 |
30 | // Make Selection Image.
31 | let selectedSide = UIGraphicsGetImageFromCurrentImageContext()
32 | selectedSide!.resizableImage(withCapInsets: UIEdgeInsets.zero)
33 |
34 | // Draw UNSelection Rect.
35 | drawRect(context, innerRect , slider.iUnSelectedBarColor.cgColor)
36 |
37 | // Make UNSelection Image.
38 | let unSelectedSide = UIGraphicsGetImageFromCurrentImageContext()
39 | unSelectedSide!.resizableImage(withCapInsets: UIEdgeInsets.zero)
40 |
41 | // Draw Selection Image.
42 | selectedSide!.draw(at: CGPoint(x:0,y:0))
43 |
44 |
45 | // Draw Selection Marks. slider.iMarkColor.cgColor, slider.iMarkPositions, slider.iMarkWidth
46 | drawMarks(context, innerRect, slider.iMarkColor.cgColor , slider.iMarkPositions , slider.iMarkWidth )
47 |
48 |
49 | let selectedStripSide = UIGraphicsGetImageFromCurrentImageContext()!.resizableImage(withCapInsets: UIEdgeInsets.zero)
50 |
51 | // Draw UNSelection Image.
52 | unSelectedSide!.draw(at: CGPoint(x:0,y:0))
53 |
54 |
55 | drawMarks(context, innerRect, slider.iMarkColor.cgColor, slider.iMarkPositions, slider.iMarkWidth)
56 |
57 |
58 | let unselectedStripSide = UIGraphicsGetImageFromCurrentImageContext()!.resizableImage(withCapInsets: UIEdgeInsets.zero)
59 |
60 | UIGraphicsEndImageContext()
61 |
62 | return (selectedStripSide,unselectedStripSide)
63 | }
64 |
65 | func drawMarks(_ context: CGContext, _ innerRect: CGRect, _ markColor: CGColor, _ marks: Array!, _ markWidth: Float) {
66 |
67 | for mark in marks {
68 | context.setLineWidth(CGFloat(markWidth))
69 | let markWidth = CGFloat(mark)
70 | let postion:CGFloat! = CGFloat((innerRect.width * markWidth ) / Constants.SLIDER.WHOLE_PERCENT)
71 | context.move(to: CGPoint(x: postion, y: innerRect.height / 2 - 5))
72 | context.addLine(to: CGPoint(x: postion, y: innerRect.height / 2 + 5))
73 | context.setStrokeColor(markColor)
74 | context.strokePath()
75 | }
76 |
77 | }
78 |
79 | func drawRect(_ context:CGContext ,_ innerRect : CGRect , _ rectColr:CGColor)->Void {
80 | context.setLineCap(CGLineCap.round);
81 | context.setLineWidth(12.0)
82 | context.move(to: CGPoint(x: 6, y: innerRect.height / 2))
83 | context.addLine(to: CGPoint(x: innerRect.width - 10, y: innerRect.height / 2))
84 | context.setStrokeColor(rectColr)
85 | context.strokePath()
86 | }
87 |
88 | }
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSlider/HorizontalViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HorizontalViewController.swift
3 | // SummerSlider
4 | //
5 | // Created by Kang Jinyeoung on 24/09/2017.
6 | // Copyright © 2017 CocoaPods. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import SummerSlider
11 | class HorizontalViewController: UIViewController {
12 |
13 | var testSlider1:SummerSlider!
14 | var testSlider2:SummerSlider!
15 | var testSlider3:SummerSlider!
16 |
17 | @IBOutlet weak var testSlider4: SummerSlider!
18 | @IBOutlet weak var testSlider5: SummerSlider!
19 | @IBOutlet weak var testSlider6: SummerSlider!
20 |
21 | let testRect1 = CGRect(x:30 ,y:70 , width:300 , height:30)
22 | let testRect2 = CGRect(x:30 ,y:120 , width:300 , height:30)
23 | let testRect3 = CGRect(x:30 ,y:170 , width:300 , height:30)
24 |
25 |
26 |
27 |
28 |
29 | override func viewDidLoad() {
30 | super.viewDidLoad()
31 |
32 | var marksArray1 = Array()
33 | marksArray1 = [0,10,20,30,40,50,60,70,80,90,100]
34 | testSlider1 = SummerSlider(frame: testRect1)
35 | testSlider1.selectedBarColor = UIColor.blue
36 | testSlider1.unselectedBarColor = UIColor.red
37 | testSlider1.markColor = UIColor.yellow
38 | testSlider1.markWidth = 2.0
39 | testSlider1.markPositions = marksArray1
40 |
41 |
42 | var marksArray2 = Array()
43 | marksArray2 = [10.0,15.0,23.0,67.0,71.0]
44 | testSlider2 = SummerSlider(frame: testRect2)
45 | testSlider2.selectedBarColor = UIColor(red:138/255.0 ,green:255/255.0 ,blue:0/255 ,alpha:1.0)
46 | testSlider2.unselectedBarColor = UIColor(red:108/255.0 ,green:200/255.0 ,blue:0/255.0 ,alpha:1.0)
47 | testSlider2.markColor = UIColor.red
48 | testSlider2.markWidth = 1.0
49 | testSlider2.markPositions = marksArray2
50 |
51 | testSlider3 = SummerSlider(frame: testRect3)
52 |
53 | var marksArray3 = Array()
54 | marksArray3 = [20.0,15.0,23.0,67.0, 90.0]
55 | testSlider3 = SummerSlider(frame: testRect3)
56 | testSlider3.selectedBarColor = UIColor.blue
57 | testSlider3.unselectedBarColor = UIColor(red:20/255.0 ,green:40/255.0 ,blue:0/255.0 ,alpha:1.0)
58 | testSlider3.markColor = UIColor.gray
59 | testSlider3.markWidth = 10.0
60 | testSlider3.markPositions = marksArray3
61 |
62 | self.view.addSubview(testSlider1)
63 | self.view.addSubview(testSlider2)
64 | self.view.addSubview(testSlider3)
65 |
66 |
67 | var marksArray4 = Array()
68 | marksArray4 = [0.0,25.0,90.0]
69 | testSlider4.selectedBarColor = UIColor.purple
70 | testSlider4.unselectedBarColor = UIColor.brown
71 | testSlider4.markColor = UIColor.gray
72 | testSlider4.markWidth = 3.0
73 | testSlider4.markPositions = marksArray4
74 |
75 | var marksArray5 = Array()
76 | marksArray5 = [10.0,20.0,30.0 , 80,90.0]
77 | testSlider5.selectedBarColor = UIColor.cyan
78 | testSlider5.unselectedBarColor = UIColor.red
79 | testSlider5.markColor = UIColor.green
80 | testSlider5.markWidth = 1.0
81 | testSlider5.markPositions = marksArray5
82 |
83 | var marksArray6 = Array()
84 | marksArray6 = [0,12,23,34,45,56,77,99]
85 | testSlider6.selectedBarColor = UIColor.white
86 | testSlider6.unselectedBarColor = UIColor.black
87 | testSlider6.markColor = UIColor.orange
88 | testSlider6.markWidth = 6.0
89 | testSlider6.markPositions = marksArray6
90 |
91 |
92 | }
93 |
94 |
95 |
96 | }
97 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSlider/Base.lproj/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
25 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSliderDemo.xcodeproj/xcshareddata/xcschemes/SummerSliderDemo.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
29 |
35 |
36 |
37 |
38 |
39 |
45 |
46 |
48 |
54 |
55 |
56 |
57 |
58 |
64 |
65 |
66 |
67 |
68 |
69 |
80 |
82 |
88 |
89 |
90 |
91 |
92 |
93 |
99 |
101 |
107 |
108 |
109 |
110 |
112 |
113 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # SummerSlider
2 | 
3 | 
4 | 
5 |
6 | [](https://travis-ci.org/superbderrick/SummerSlider)
7 | [](http://cocoapods.org/pods/SummerSlider)
8 | [](http://cocoapods.org/pods/SummerSlider)
9 | [](http://cocoapods.org/pods/SummerSlider)
10 | [](http://hits.dwyl.com/superbderrick/https://githubcom/superbderrick/SummerSlider)
11 |
12 | 
13 |
14 | ## SummerSlider
15 |
16 |
17 | SummerSlider is an iOS Custom Slider library
18 | It's available with variety usecases like (typically custome ui slider and video-related apps)
19 | Besides the repository introduces various usecase samples with SummerSlider
20 |
21 | ## UseCases
22 | - Youtube Player UI scenario
23 | It s
24 | s some parts for advertisement separator sections during entire video duration
25 |
26 | - IMA SDK (VAST) with AVPLAYER
27 |
28 | If you used Google IMA SDK with AVPLAYER , the summer slider is a very useful and suitable
29 | vast sample code was intergrated and explained how to use for some vase usecases such as midrole and prerole cases
30 |
31 | ## Demo
32 | #### Basic
33 | 
34 | #### Usecase(IMA SDK)
35 | 
36 |
37 |
38 | ## Requirements
39 | - Swift 3,4.0,5.0
40 | - iOS 8.0+
41 | - Xcode 8
42 |
43 | ## How to install
44 | SummerSlider is available through [CocoaPods](http://cocoapods.org). To install
45 | it, simply add the following line to your Podfile:
46 |
47 | Swift 3.0
48 | ```ruby
49 | pod 'SummerSlider', '~>0.2.0'
50 | ```
51 |
52 | Swift 4.0
53 | ```ruby
54 | pod 'SummerSlider', '~>0.3.0'
55 | ```
56 |
57 | Swift 5.0
58 | ```ruby
59 | pod 'SummerSlider', '~>0.4.0'
60 | ```
61 |
62 |
63 | #### Classic and ancient way
64 | Copy into your project the following files:
65 | `SummerSlider.swift` , `Constants.swift`,
66 | `HorizontalSlider.swift`,`Slider.swift`,`SliderDrawingProtocol.swift`,`SliderFactory.swift`,
67 | `SummerSliderTypes.swift`,`VerticalSlider.swift`,
68 |
69 |
70 | How to use it?
71 | ------------
72 | #### First way (User Interface):
73 |
74 | Add an UISlider outlet to your view using the User Interface and set `SummerSlider` as the custom class. Mostly the exposed properties are marked with **@IBInspectable**, so you can customize them in storyboard's attributes inspector and preview it directly.
75 |
76 |
77 | Link it with the outlet property if you want to access its properties:
78 |
79 | @IBOutlet weak var sampleSlider: SummerSlider!
80 |
81 | Simply customize it! (take a look at -Customization- section)
82 | ```
83 | var sampleArray = Array()
84 | sampleArray = [0,12,23,34,45,56,77,99]
85 | sampleSlider.selectedBarColor = UIColor.white
86 | sampleSlider.unselectedBarColor = UIColor.black
87 | sampleSlider.markColor = UIColor.orange
88 | sampleSlider.markWidth = 2.0
89 | sampleSlider.markPositions = sampleArray
90 | ```
91 |
92 |
93 | Second way (Using code) - **Preferred**
94 |
95 |
96 | It is really easy to set it! Firstly, import SummerSlider.
97 |
98 | import SummerSlider
99 |
100 |
101 | Instantiate and customize it (again, take a look at -Customization- section). Finally add it to the desired view as usual:
102 | ```
103 |
104 | let testRect1 = CGRect(x:30 ,y:70 , width:300 ,height:30)
105 | var marksArray1 = Array()
106 | marksArray1 = [0,10,20,30,40,50,60,70,80,90,100]
107 | secondSlider = SummerSlider(frame: testRect1)
108 | secondSlider.selectedBarColor = UIColor.blue
109 | secondSlider.unselectedBarColor = UIColor.red
110 | secondSlider.markColor = UIColor.yellow
111 | secondSlider.markWidth = 2.0
112 | secondSlider.markPositions = marksArray1
113 | self.view.addSubview(secondSlider)
114 | ```
115 |
116 |
117 | Setting the marks
118 | ------------
119 | You can set the marks using a percentage system from 0 to 100 (Percent). Set all the marks in the `markPositions array` property:
120 | ```
121 | summerSlider.markPositions = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
122 | ```
123 |
124 | Customization
125 | ------------
126 | Here you can see a bunch of parameters that you can change:
127 |
128 | #### Marks
129 | - `markColor` : UIColor - Customize the color of the marks.
130 | - `markWidth`: Float - Customize the width of the marks.
131 | - `markPositions`: [Float] - Set in a percentage system from 0 to 100 where the marks should be placed.
132 |
133 | #### Bar colors
134 | - `selectedBarColor`: UIColor - Customize the color of the selected side of the slider.
135 | - `unselectedBarColor`: UIColor - Customize the color of the unselected side of the slider.
136 |
137 | ## Author
138 |
139 | SuperbDerrick, kang.derrick@gmail.com
140 |
141 | ## References
142 | Please Let me know pull request or if you want to use this library in your application.
143 |
144 | ## License
145 |
146 | SummerSlider is available under the MIT license. See the LICENSE file for more info.
147 |
--------------------------------------------------------------------------------
/useCases/vastExample/vastExample/PlayerViewController.swift:
--------------------------------------------------------------------------------
1 | import AVFoundation
2 | import GoogleInteractiveMediaAds
3 | import UIKit
4 | import SummerSlider
5 | class PlayerViewController: UIViewController, IMAAdsLoaderDelegate, IMAAdsManagerDelegate {
6 |
7 | static let kTestAppContentUrl = "http://rmcdn.2mdn.net/Demo/html5/output.mp4"
8 |
9 | static let kTestAppAdTagUrl =
10 | "https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&" +
11 | "iu=/124319096/external/ad_rule_samples&ciu_szs=300x250&ad_rule=1&impl=s&gdfp_req=1&env=vp&" +
12 | "output=vast&unviewed_position_start=1&" +
13 | "cust_params=deployment%3Ddevsite%26sample_ar%3Dpremidpost&cmsid=496&vid=short_onecue&" +
14 | "correlator=";
15 |
16 | struct POSITION {
17 | static let ZERO : Float = 0.0
18 | static let END : Float = 100.0
19 | }
20 |
21 | @IBOutlet weak var videoView: UIView!
22 | var contentPlayer: AVPlayer?
23 | var playerLayer: AVPlayerLayer?
24 |
25 | var contentPlayhead: IMAAVPlayerContentPlayhead?
26 | var adsLoader: IMAAdsLoader!
27 | var adsManager: IMAAdsManager!
28 |
29 | @IBOutlet weak var summerSlider: SummerSlider!
30 |
31 |
32 | override func viewDidLoad() {
33 | super.viewDidLoad()
34 |
35 | setUpContentPlayer()
36 | setUpAdsLoader()
37 | requestAds()
38 |
39 | // setup For SummerSlider.
40 |
41 | setUpSummerSlider()
42 | }
43 |
44 | override func viewDidAppear(_ animated: Bool) {
45 | playerLayer?.frame = self.videoView.layer.bounds
46 | }
47 |
48 | func setUpContentPlayer() {
49 | // Load AVPlayer with path to our content.
50 | guard let contentURL = URL(string: PlayerViewController.kTestAppContentUrl) else {
51 | print("ERROR: please use a valid URL for the content URL")
52 | return
53 | }
54 | contentPlayer = AVPlayer(url: contentURL)
55 |
56 | // Create a player layer for the player.
57 | playerLayer = AVPlayerLayer(player: contentPlayer)
58 |
59 | // Size, position, and display the AVPlayer.
60 | playerLayer?.frame = videoView.layer.bounds
61 | videoView.layer.addSublayer(playerLayer!)
62 |
63 | // Set up our content playhead and contentComplete callback.
64 | contentPlayhead = IMAAVPlayerContentPlayhead(avPlayer: contentPlayer)
65 | NotificationCenter.default.addObserver(
66 | self,
67 | selector: #selector(PlayerViewController.contentDidFinishPlaying(_:)),
68 | name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
69 | object: contentPlayer?.currentItem);
70 |
71 | }
72 |
73 | @objc func contentDidFinishPlaying(_ notification: Notification) {
74 | // Make sure we don't call contentComplete as a result of an ad completing.
75 | if (notification.object as! AVPlayerItem) == contentPlayer?.currentItem {
76 | adsLoader.contentComplete()
77 | }
78 | }
79 |
80 | func setUpAdsLoader() {
81 | adsLoader = IMAAdsLoader(settings: nil)
82 | adsLoader.delegate = self
83 | }
84 |
85 | func requestAds() {
86 | // Create ad display container for ad rendering.
87 | let adDisplayContainer = IMAAdDisplayContainer(adContainer: videoView, companionSlots: nil)
88 | // Create an ad request with our ad tag, display container, and optional user context.
89 | let request = IMAAdsRequest(
90 | adTagUrl: PlayerViewController.kTestAppAdTagUrl,
91 | adDisplayContainer: adDisplayContainer,
92 | contentPlayhead: contentPlayhead,
93 | userContext: nil)
94 |
95 | adsLoader.requestAds(with: request)
96 | }
97 |
98 | // MARK: - IMAAdsLoaderDelegate
99 |
100 | func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
101 | // Grab the instance of the IMAAdsManager and set ourselves as the delegate.
102 | adsManager = adsLoadedData.adsManager
103 | adsManager.delegate = self
104 |
105 | // Create ads rendering settings and tell the SDK to use the in-app browser.
106 | let adsRenderingSettings = IMAAdsRenderingSettings()
107 | adsRenderingSettings.webOpenerPresentingController = self
108 |
109 | // Initialize the ads manager.
110 | adsManager.initialize(with: adsRenderingSettings)
111 |
112 |
113 |
114 | // Draw Ad postions with SummerSlider appropriately.
115 | var adPositions = Array();
116 | if self.adsManager != nil {
117 | if self.adsManager!.adCuePoints.count > 0 {
118 | for mark in self.adsManager!.adCuePoints {
119 | let position = mark as! Float
120 | if position == 0 {
121 | adPositions.append(POSITION.ZERO)
122 | } else if position == -1 {
123 | adPositions.append(POSITION.END)
124 | } else {
125 | let duration = getDuration()
126 | let postionTime :Float64 = Float64(position * 100)
127 | let pointPercent = postionTime / duration
128 | adPositions.append(Float(pointPercent))
129 | }
130 | }
131 | } else if self.adsManager!.adCuePoints.count == 0 {
132 | adPositions.append(POSITION.ZERO)
133 | }
134 | }
135 |
136 | summerSlider.markPositions = adPositions
137 | summerSlider.reDraw()
138 | }
139 |
140 | func adsLoader(_ loader: IMAAdsLoader!, failedWith adErrorData: IMAAdLoadingErrorData!) {
141 | print("Error loading ads: \(adErrorData.adError.message)")
142 | contentPlayer?.play()
143 | }
144 |
145 | // MARK: - IMAAdsManagerDelegate
146 |
147 | func adsManager(_ adsManager: IMAAdsManager!, didReceive event: IMAAdEvent!) {
148 | if event.type == IMAAdEventType.LOADED {
149 | // When the SDK notifies us that ads have been loaded, play them.
150 | adsManager.start()
151 | }
152 | }
153 |
154 | func adsManager(_ adsManager: IMAAdsManager!, didReceive error: IMAAdError!) {
155 | // Something went wrong with the ads manager after ads were loaded. Log the error and play the
156 | // content.
157 | print("AdsManager error: \(error.message)")
158 | contentPlayer?.play()
159 | }
160 |
161 | func adsManagerDidRequestContentPause(_ adsManager: IMAAdsManager!) {
162 | // The SDK is going to play ads, so pause the content.
163 | contentPlayer?.pause()
164 | }
165 |
166 | func adsManagerDidRequestContentResume(_ adsManager: IMAAdsManager!) {
167 | // The SDK is done playing ads (at least for now), so resume the content.
168 | contentPlayer?.play()
169 | }
170 |
171 | // Get the duration value from the player item.
172 | func getPlayerItemDuration(_ item: AVPlayerItem) -> CMTime {
173 | var itemDuration = kCMTimeInvalid
174 | if (item.responds(to: #selector(getter: CAMediaTiming.duration))) {
175 | itemDuration = item.duration
176 | } else {
177 | if (item.asset.responds(to: #selector(getter: CAMediaTiming.duration))) {
178 | itemDuration = item.asset.duration
179 | }
180 | }
181 | return itemDuration
182 | }
183 |
184 | func getDuration() -> Float64 {
185 | var wholeTime :Float64 = 0
186 | if self.contentPlayer != nil {
187 | let controller: PlayerViewController = self
188 | let duration = controller.getPlayerItemDuration(self.contentPlayer!.currentItem!)
189 |
190 | wholeTime = CMTimeGetSeconds(duration)
191 | }
192 | return wholeTime
193 | }
194 |
195 |
196 | // MARK: - Regarding of SummerSlider API.
197 |
198 | func setUpSummerSlider() {
199 | // Other properties have already been set from storyboard.
200 | summerSlider.markWidth = 3.0
201 | }
202 |
203 | }
204 |
205 |
--------------------------------------------------------------------------------
/useCases/vastExample/vastExample/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 |
35 |
36 |
37 |
38 |
39 |
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 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
--------------------------------------------------------------------------------
/SummerSliderDemo/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 |
25 |
26 |
27 |
28 |
29 |
30 |
37 |
38 |
39 |
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 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSlider/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 |
25 |
26 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
--------------------------------------------------------------------------------
/useCases/vastExample/vastExample.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 4900C4BF1F7BC00B00C50F06 /* PlayerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4900C4BE1F7BC00B00C50F06 /* PlayerViewController.swift */; };
11 | 4900C4C11F7BC2C100C50F06 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4900C4C01F7BC2C100C50F06 /* AVFoundation.framework */; };
12 | 49C8BA981F653EE2004C3644 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49C8BA971F653EE2004C3644 /* AppDelegate.swift */; };
13 | 49C8BA9A1F653EE2004C3644 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49C8BA991F653EE2004C3644 /* ViewController.swift */; };
14 | 49C8BA9D1F653EE2004C3644 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 49C8BA9B1F653EE2004C3644 /* Main.storyboard */; };
15 | 49C8BA9F1F653EE2004C3644 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 49C8BA9E1F653EE2004C3644 /* Assets.xcassets */; };
16 | 49C8BAA21F653EE2004C3644 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 49C8BAA01F653EE2004C3644 /* LaunchScreen.storyboard */; };
17 | E69C93641E188A41D62F37C9 /* Pods_vastExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F347B5C2F70C711BD96DE46D /* Pods_vastExample.framework */; };
18 | /* End PBXBuildFile section */
19 |
20 | /* Begin PBXFileReference section */
21 | 3C322E51230AD60E3FDB2C79 /* Pods-vastExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-vastExample.debug.xcconfig"; path = "Pods/Target Support Files/Pods-vastExample/Pods-vastExample.debug.xcconfig"; sourceTree = ""; };
22 | 4900C4BE1F7BC00B00C50F06 /* PlayerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayerViewController.swift; sourceTree = ""; };
23 | 4900C4C01F7BC2C100C50F06 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
24 | 4900C4C21F7BC32C00C50F06 /* AVKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVKit.framework; path = System/Library/Frameworks/AVKit.framework; sourceTree = SDKROOT; };
25 | 4900C4C41F7BC35500C50F06 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; };
26 | 49C8BA941F653EE2004C3644 /* vastExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = vastExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
27 | 49C8BA971F653EE2004C3644 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
28 | 49C8BA991F653EE2004C3644 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
29 | 49C8BA9C1F653EE2004C3644 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
30 | 49C8BA9E1F653EE2004C3644 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
31 | 49C8BAA11F653EE2004C3644 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
32 | 49C8BAA31F653EE2004C3644 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
33 | 55E507B054165B140490FC72 /* Pods-vastExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-vastExample.release.xcconfig"; path = "Pods/Target Support Files/Pods-vastExample/Pods-vastExample.release.xcconfig"; sourceTree = ""; };
34 | F347B5C2F70C711BD96DE46D /* Pods_vastExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_vastExample.framework; sourceTree = BUILT_PRODUCTS_DIR; };
35 | /* End PBXFileReference section */
36 |
37 | /* Begin PBXFrameworksBuildPhase section */
38 | 49C8BA911F653EE2004C3644 /* Frameworks */ = {
39 | isa = PBXFrameworksBuildPhase;
40 | buildActionMask = 2147483647;
41 | files = (
42 | 4900C4C11F7BC2C100C50F06 /* AVFoundation.framework in Frameworks */,
43 | E69C93641E188A41D62F37C9 /* Pods_vastExample.framework in Frameworks */,
44 | );
45 | runOnlyForDeploymentPostprocessing = 0;
46 | };
47 | /* End PBXFrameworksBuildPhase section */
48 |
49 | /* Begin PBXGroup section */
50 | 49C8BA8B1F653EE2004C3644 = {
51 | isa = PBXGroup;
52 | children = (
53 | 49C8BA961F653EE2004C3644 /* vastExample */,
54 | 49C8BA951F653EE2004C3644 /* Products */,
55 | 9B15F1580D2B1321212A8FDF /* Pods */,
56 | 7CB3D9BD82EA3D676DD86806 /* Frameworks */,
57 | );
58 | sourceTree = "";
59 | };
60 | 49C8BA951F653EE2004C3644 /* Products */ = {
61 | isa = PBXGroup;
62 | children = (
63 | 49C8BA941F653EE2004C3644 /* vastExample.app */,
64 | );
65 | name = Products;
66 | sourceTree = "";
67 | };
68 | 49C8BA961F653EE2004C3644 /* vastExample */ = {
69 | isa = PBXGroup;
70 | children = (
71 | 49C8BA971F653EE2004C3644 /* AppDelegate.swift */,
72 | 49C8BA991F653EE2004C3644 /* ViewController.swift */,
73 | 49C8BA9B1F653EE2004C3644 /* Main.storyboard */,
74 | 49C8BA9E1F653EE2004C3644 /* Assets.xcassets */,
75 | 49C8BAA01F653EE2004C3644 /* LaunchScreen.storyboard */,
76 | 49C8BAA31F653EE2004C3644 /* Info.plist */,
77 | 4900C4BE1F7BC00B00C50F06 /* PlayerViewController.swift */,
78 | );
79 | path = vastExample;
80 | sourceTree = "";
81 | };
82 | 7CB3D9BD82EA3D676DD86806 /* Frameworks */ = {
83 | isa = PBXGroup;
84 | children = (
85 | 4900C4C41F7BC35500C50F06 /* MediaPlayer.framework */,
86 | 4900C4C21F7BC32C00C50F06 /* AVKit.framework */,
87 | 4900C4C01F7BC2C100C50F06 /* AVFoundation.framework */,
88 | F347B5C2F70C711BD96DE46D /* Pods_vastExample.framework */,
89 | );
90 | name = Frameworks;
91 | sourceTree = "";
92 | };
93 | 9B15F1580D2B1321212A8FDF /* Pods */ = {
94 | isa = PBXGroup;
95 | children = (
96 | 3C322E51230AD60E3FDB2C79 /* Pods-vastExample.debug.xcconfig */,
97 | 55E507B054165B140490FC72 /* Pods-vastExample.release.xcconfig */,
98 | );
99 | name = Pods;
100 | sourceTree = "";
101 | };
102 | /* End PBXGroup section */
103 |
104 | /* Begin PBXNativeTarget section */
105 | 49C8BA931F653EE2004C3644 /* vastExample */ = {
106 | isa = PBXNativeTarget;
107 | buildConfigurationList = 49C8BAA61F653EE2004C3644 /* Build configuration list for PBXNativeTarget "vastExample" */;
108 | buildPhases = (
109 | 4ADDB4AFBA9E2A9320585E83 /* [CP] Check Pods Manifest.lock */,
110 | 49C8BA901F653EE2004C3644 /* Sources */,
111 | 49C8BA911F653EE2004C3644 /* Frameworks */,
112 | 49C8BA921F653EE2004C3644 /* Resources */,
113 | 220E3C0B632DA9353897C95E /* [CP] Embed Pods Frameworks */,
114 | 37BCEB01B148EC85234E6B31 /* [CP] Copy Pods Resources */,
115 | );
116 | buildRules = (
117 | );
118 | dependencies = (
119 | );
120 | name = vastExample;
121 | productName = vastExample;
122 | productReference = 49C8BA941F653EE2004C3644 /* vastExample.app */;
123 | productType = "com.apple.product-type.application";
124 | };
125 | /* End PBXNativeTarget section */
126 |
127 | /* Begin PBXProject section */
128 | 49C8BA8C1F653EE2004C3644 /* Project object */ = {
129 | isa = PBXProject;
130 | attributes = {
131 | LastSwiftUpdateCheck = 0830;
132 | LastUpgradeCheck = 0830;
133 | ORGANIZATIONNAME = SuperbDerrick;
134 | TargetAttributes = {
135 | 49C8BA931F653EE2004C3644 = {
136 | CreatedOnToolsVersion = 8.3.2;
137 | ProvisioningStyle = Automatic;
138 | };
139 | };
140 | };
141 | buildConfigurationList = 49C8BA8F1F653EE2004C3644 /* Build configuration list for PBXProject "vastExample" */;
142 | compatibilityVersion = "Xcode 3.2";
143 | developmentRegion = English;
144 | hasScannedForEncodings = 0;
145 | knownRegions = (
146 | en,
147 | Base,
148 | );
149 | mainGroup = 49C8BA8B1F653EE2004C3644;
150 | productRefGroup = 49C8BA951F653EE2004C3644 /* Products */;
151 | projectDirPath = "";
152 | projectRoot = "";
153 | targets = (
154 | 49C8BA931F653EE2004C3644 /* vastExample */,
155 | );
156 | };
157 | /* End PBXProject section */
158 |
159 | /* Begin PBXResourcesBuildPhase section */
160 | 49C8BA921F653EE2004C3644 /* Resources */ = {
161 | isa = PBXResourcesBuildPhase;
162 | buildActionMask = 2147483647;
163 | files = (
164 | 49C8BAA21F653EE2004C3644 /* LaunchScreen.storyboard in Resources */,
165 | 49C8BA9F1F653EE2004C3644 /* Assets.xcassets in Resources */,
166 | 49C8BA9D1F653EE2004C3644 /* Main.storyboard in Resources */,
167 | );
168 | runOnlyForDeploymentPostprocessing = 0;
169 | };
170 | /* End PBXResourcesBuildPhase section */
171 |
172 | /* Begin PBXShellScriptBuildPhase section */
173 | 220E3C0B632DA9353897C95E /* [CP] Embed Pods Frameworks */ = {
174 | isa = PBXShellScriptBuildPhase;
175 | buildActionMask = 2147483647;
176 | files = (
177 | );
178 | inputPaths = (
179 | "${SRCROOT}/Pods/Target Support Files/Pods-vastExample/Pods-vastExample-frameworks.sh",
180 | "${PODS_ROOT}/GoogleAds-IMA-iOS-SDK/GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.framework",
181 | "${BUILT_PRODUCTS_DIR}/SummerSlider/SummerSlider.framework",
182 | );
183 | name = "[CP] Embed Pods Frameworks";
184 | outputPaths = (
185 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleInteractiveMediaAds.framework",
186 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SummerSlider.framework",
187 | );
188 | runOnlyForDeploymentPostprocessing = 0;
189 | shellPath = /bin/sh;
190 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-vastExample/Pods-vastExample-frameworks.sh\"\n";
191 | showEnvVarsInLog = 0;
192 | };
193 | 37BCEB01B148EC85234E6B31 /* [CP] Copy Pods Resources */ = {
194 | isa = PBXShellScriptBuildPhase;
195 | buildActionMask = 2147483647;
196 | files = (
197 | );
198 | inputPaths = (
199 | );
200 | name = "[CP] Copy Pods Resources";
201 | outputPaths = (
202 | );
203 | runOnlyForDeploymentPostprocessing = 0;
204 | shellPath = /bin/sh;
205 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-vastExample/Pods-vastExample-resources.sh\"\n";
206 | showEnvVarsInLog = 0;
207 | };
208 | 4ADDB4AFBA9E2A9320585E83 /* [CP] Check Pods Manifest.lock */ = {
209 | isa = PBXShellScriptBuildPhase;
210 | buildActionMask = 2147483647;
211 | files = (
212 | );
213 | inputPaths = (
214 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
215 | "${PODS_ROOT}/Manifest.lock",
216 | );
217 | name = "[CP] Check Pods Manifest.lock";
218 | outputPaths = (
219 | "$(DERIVED_FILE_DIR)/Pods-vastExample-checkManifestLockResult.txt",
220 | );
221 | runOnlyForDeploymentPostprocessing = 0;
222 | shellPath = /bin/sh;
223 | 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";
224 | showEnvVarsInLog = 0;
225 | };
226 | /* End PBXShellScriptBuildPhase section */
227 |
228 | /* Begin PBXSourcesBuildPhase section */
229 | 49C8BA901F653EE2004C3644 /* Sources */ = {
230 | isa = PBXSourcesBuildPhase;
231 | buildActionMask = 2147483647;
232 | files = (
233 | 4900C4BF1F7BC00B00C50F06 /* PlayerViewController.swift in Sources */,
234 | 49C8BA9A1F653EE2004C3644 /* ViewController.swift in Sources */,
235 | 49C8BA981F653EE2004C3644 /* AppDelegate.swift in Sources */,
236 | );
237 | runOnlyForDeploymentPostprocessing = 0;
238 | };
239 | /* End PBXSourcesBuildPhase section */
240 |
241 | /* Begin PBXVariantGroup section */
242 | 49C8BA9B1F653EE2004C3644 /* Main.storyboard */ = {
243 | isa = PBXVariantGroup;
244 | children = (
245 | 49C8BA9C1F653EE2004C3644 /* Base */,
246 | );
247 | name = Main.storyboard;
248 | sourceTree = "";
249 | };
250 | 49C8BAA01F653EE2004C3644 /* LaunchScreen.storyboard */ = {
251 | isa = PBXVariantGroup;
252 | children = (
253 | 49C8BAA11F653EE2004C3644 /* Base */,
254 | );
255 | name = LaunchScreen.storyboard;
256 | sourceTree = "";
257 | };
258 | /* End PBXVariantGroup section */
259 |
260 | /* Begin XCBuildConfiguration section */
261 | 49C8BAA41F653EE2004C3644 /* Debug */ = {
262 | isa = XCBuildConfiguration;
263 | buildSettings = {
264 | ALWAYS_SEARCH_USER_PATHS = NO;
265 | CLANG_ANALYZER_NONNULL = YES;
266 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
267 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
268 | CLANG_CXX_LIBRARY = "libc++";
269 | CLANG_ENABLE_MODULES = YES;
270 | CLANG_ENABLE_OBJC_ARC = YES;
271 | CLANG_WARN_BOOL_CONVERSION = YES;
272 | CLANG_WARN_CONSTANT_CONVERSION = YES;
273 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
274 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
275 | CLANG_WARN_EMPTY_BODY = YES;
276 | CLANG_WARN_ENUM_CONVERSION = YES;
277 | CLANG_WARN_INFINITE_RECURSION = YES;
278 | CLANG_WARN_INT_CONVERSION = YES;
279 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
280 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
281 | CLANG_WARN_UNREACHABLE_CODE = YES;
282 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
283 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
284 | COPY_PHASE_STRIP = NO;
285 | DEBUG_INFORMATION_FORMAT = dwarf;
286 | ENABLE_STRICT_OBJC_MSGSEND = YES;
287 | ENABLE_TESTABILITY = YES;
288 | GCC_C_LANGUAGE_STANDARD = gnu99;
289 | GCC_DYNAMIC_NO_PIC = NO;
290 | GCC_NO_COMMON_BLOCKS = YES;
291 | GCC_OPTIMIZATION_LEVEL = 0;
292 | GCC_PREPROCESSOR_DEFINITIONS = (
293 | "DEBUG=1",
294 | "$(inherited)",
295 | );
296 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
297 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
298 | GCC_WARN_UNDECLARED_SELECTOR = YES;
299 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
300 | GCC_WARN_UNUSED_FUNCTION = YES;
301 | GCC_WARN_UNUSED_VARIABLE = YES;
302 | IPHONEOS_DEPLOYMENT_TARGET = 10.3;
303 | MTL_ENABLE_DEBUG_INFO = YES;
304 | ONLY_ACTIVE_ARCH = YES;
305 | SDKROOT = iphoneos;
306 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
307 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
308 | TARGETED_DEVICE_FAMILY = "1,2";
309 | };
310 | name = Debug;
311 | };
312 | 49C8BAA51F653EE2004C3644 /* Release */ = {
313 | isa = XCBuildConfiguration;
314 | buildSettings = {
315 | ALWAYS_SEARCH_USER_PATHS = NO;
316 | CLANG_ANALYZER_NONNULL = YES;
317 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
318 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
319 | CLANG_CXX_LIBRARY = "libc++";
320 | CLANG_ENABLE_MODULES = YES;
321 | CLANG_ENABLE_OBJC_ARC = YES;
322 | CLANG_WARN_BOOL_CONVERSION = YES;
323 | CLANG_WARN_CONSTANT_CONVERSION = YES;
324 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
325 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
326 | CLANG_WARN_EMPTY_BODY = YES;
327 | CLANG_WARN_ENUM_CONVERSION = YES;
328 | CLANG_WARN_INFINITE_RECURSION = YES;
329 | CLANG_WARN_INT_CONVERSION = YES;
330 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
331 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
332 | CLANG_WARN_UNREACHABLE_CODE = YES;
333 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
334 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
335 | COPY_PHASE_STRIP = NO;
336 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
337 | ENABLE_NS_ASSERTIONS = NO;
338 | ENABLE_STRICT_OBJC_MSGSEND = YES;
339 | GCC_C_LANGUAGE_STANDARD = gnu99;
340 | GCC_NO_COMMON_BLOCKS = YES;
341 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
342 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
343 | GCC_WARN_UNDECLARED_SELECTOR = YES;
344 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
345 | GCC_WARN_UNUSED_FUNCTION = YES;
346 | GCC_WARN_UNUSED_VARIABLE = YES;
347 | IPHONEOS_DEPLOYMENT_TARGET = 10.3;
348 | MTL_ENABLE_DEBUG_INFO = NO;
349 | SDKROOT = iphoneos;
350 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
351 | TARGETED_DEVICE_FAMILY = "1,2";
352 | VALIDATE_PRODUCT = YES;
353 | };
354 | name = Release;
355 | };
356 | 49C8BAA71F653EE2004C3644 /* Debug */ = {
357 | isa = XCBuildConfiguration;
358 | baseConfigurationReference = 3C322E51230AD60E3FDB2C79 /* Pods-vastExample.debug.xcconfig */;
359 | buildSettings = {
360 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
361 | DEVELOPMENT_TEAM = "";
362 | INFOPLIST_FILE = vastExample/Info.plist;
363 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
364 | PRODUCT_BUNDLE_IDENTIFIER = superbderrick.tistory.com.vastExample;
365 | PRODUCT_NAME = "$(TARGET_NAME)";
366 | SWIFT_VERSION = 4.0;
367 | };
368 | name = Debug;
369 | };
370 | 49C8BAA81F653EE2004C3644 /* Release */ = {
371 | isa = XCBuildConfiguration;
372 | baseConfigurationReference = 55E507B054165B140490FC72 /* Pods-vastExample.release.xcconfig */;
373 | buildSettings = {
374 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
375 | DEVELOPMENT_TEAM = "";
376 | INFOPLIST_FILE = vastExample/Info.plist;
377 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
378 | PRODUCT_BUNDLE_IDENTIFIER = superbderrick.tistory.com.vastExample;
379 | PRODUCT_NAME = "$(TARGET_NAME)";
380 | SWIFT_VERSION = 4.0;
381 | };
382 | name = Release;
383 | };
384 | /* End XCBuildConfiguration section */
385 |
386 | /* Begin XCConfigurationList section */
387 | 49C8BA8F1F653EE2004C3644 /* Build configuration list for PBXProject "vastExample" */ = {
388 | isa = XCConfigurationList;
389 | buildConfigurations = (
390 | 49C8BAA41F653EE2004C3644 /* Debug */,
391 | 49C8BAA51F653EE2004C3644 /* Release */,
392 | );
393 | defaultConfigurationIsVisible = 0;
394 | defaultConfigurationName = Release;
395 | };
396 | 49C8BAA61F653EE2004C3644 /* Build configuration list for PBXNativeTarget "vastExample" */ = {
397 | isa = XCConfigurationList;
398 | buildConfigurations = (
399 | 49C8BAA71F653EE2004C3644 /* Debug */,
400 | 49C8BAA81F653EE2004C3644 /* Release */,
401 | );
402 | defaultConfigurationIsVisible = 0;
403 | defaultConfigurationName = Release;
404 | };
405 | /* End XCConfigurationList section */
406 | };
407 | rootObject = 49C8BA8C1F653EE2004C3644 /* Project object */;
408 | }
409 |
--------------------------------------------------------------------------------
/useCases/withCocoaPod/SummerSliderDemo.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 0B66DDD292E27EFC6BBE8BA7 /* Pods_SummerSliderDemo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C585BF4C46F1949DDA2C7AA5 /* Pods_SummerSliderDemo.framework */; };
11 | 49FB8EAF1F7767F7008FB0A5 /* HorizontalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49FB8EAE1F7767F7008FB0A5 /* HorizontalViewController.swift */; };
12 | 49FB8EB11F77680F008FB0A5 /* VerticalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49FB8EB01F77680F008FB0A5 /* VerticalViewController.swift */; };
13 | 49FB8EB41F776839008FB0A5 /* YoutubeStyleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49FB8EB31F776839008FB0A5 /* YoutubeStyleViewController.swift */; };
14 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; };
15 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* ViewController.swift */; };
16 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; };
17 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; };
18 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; };
19 | /* End PBXBuildFile section */
20 |
21 | /* Begin PBXFileReference section */
22 | 12B5B990C446EC86F65C37BD /* Pods-SummerSliderDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SummerSliderDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SummerSliderDemo/Pods-SummerSliderDemo.debug.xcconfig"; sourceTree = ""; };
23 | 1E7663A3F9C37820BBE7327C /* Pods-SummerSliderDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SummerSliderDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-SummerSliderDemo/Pods-SummerSliderDemo.release.xcconfig"; sourceTree = ""; };
24 | 49FB8EAE1F7767F7008FB0A5 /* HorizontalViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalViewController.swift; sourceTree = ""; };
25 | 49FB8EB01F77680F008FB0A5 /* VerticalViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerticalViewController.swift; sourceTree = ""; };
26 | 49FB8EB31F776839008FB0A5 /* YoutubeStyleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YoutubeStyleViewController.swift; sourceTree = ""; };
27 | 607FACD01AFB9204008FA782 /* SummerSliderDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SummerSliderDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
28 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
29 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
30 | 607FACD71AFB9204008FA782 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
31 | 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
32 | 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
33 | 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; };
34 | 79DC33E8CA8B3F8E4CF3EC4D /* Pods_SummerSlider_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SummerSlider_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
35 | C585BF4C46F1949DDA2C7AA5 /* Pods_SummerSliderDemo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SummerSliderDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; };
36 | /* End PBXFileReference section */
37 |
38 | /* Begin PBXFrameworksBuildPhase section */
39 | 607FACCD1AFB9204008FA782 /* Frameworks */ = {
40 | isa = PBXFrameworksBuildPhase;
41 | buildActionMask = 2147483647;
42 | files = (
43 | 0B66DDD292E27EFC6BBE8BA7 /* Pods_SummerSliderDemo.framework in Frameworks */,
44 | );
45 | runOnlyForDeploymentPostprocessing = 0;
46 | };
47 | /* End PBXFrameworksBuildPhase section */
48 |
49 | /* Begin PBXGroup section */
50 | 49FB8EB21F776815008FB0A5 /* ViewControllers */ = {
51 | isa = PBXGroup;
52 | children = (
53 | 49FB8EB01F77680F008FB0A5 /* VerticalViewController.swift */,
54 | 49FB8EAE1F7767F7008FB0A5 /* HorizontalViewController.swift */,
55 | 49FB8EB31F776839008FB0A5 /* YoutubeStyleViewController.swift */,
56 | );
57 | name = ViewControllers;
58 | sourceTree = "";
59 | };
60 | 607FACC71AFB9204008FA782 = {
61 | isa = PBXGroup;
62 | children = (
63 | 607FACD21AFB9204008FA782 /* SummerSliderDemo */,
64 | 607FACD11AFB9204008FA782 /* Products */,
65 | 7B4193D2B2F03E53DCE34170 /* Pods */,
66 | ACBED11CA942D6D84DC384E4 /* Frameworks */,
67 | );
68 | sourceTree = "";
69 | };
70 | 607FACD11AFB9204008FA782 /* Products */ = {
71 | isa = PBXGroup;
72 | children = (
73 | 607FACD01AFB9204008FA782 /* SummerSliderDemo.app */,
74 | );
75 | name = Products;
76 | sourceTree = "";
77 | };
78 | 607FACD21AFB9204008FA782 /* SummerSliderDemo */ = {
79 | isa = PBXGroup;
80 | children = (
81 | 49FB8EB21F776815008FB0A5 /* ViewControllers */,
82 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */,
83 | 607FACD71AFB9204008FA782 /* ViewController.swift */,
84 | 607FACD91AFB9204008FA782 /* Main.storyboard */,
85 | 607FACDC1AFB9204008FA782 /* Images.xcassets */,
86 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */,
87 | 607FACD31AFB9204008FA782 /* Supporting Files */,
88 | );
89 | name = SummerSliderDemo;
90 | path = SummerSlider;
91 | sourceTree = "";
92 | };
93 | 607FACD31AFB9204008FA782 /* Supporting Files */ = {
94 | isa = PBXGroup;
95 | children = (
96 | 607FACD41AFB9204008FA782 /* Info.plist */,
97 | );
98 | name = "Supporting Files";
99 | sourceTree = "";
100 | };
101 | 7B4193D2B2F03E53DCE34170 /* Pods */ = {
102 | isa = PBXGroup;
103 | children = (
104 | 12B5B990C446EC86F65C37BD /* Pods-SummerSliderDemo.debug.xcconfig */,
105 | 1E7663A3F9C37820BBE7327C /* Pods-SummerSliderDemo.release.xcconfig */,
106 | );
107 | name = Pods;
108 | sourceTree = "";
109 | };
110 | ACBED11CA942D6D84DC384E4 /* Frameworks */ = {
111 | isa = PBXGroup;
112 | children = (
113 | 79DC33E8CA8B3F8E4CF3EC4D /* Pods_SummerSlider_Example.framework */,
114 | C585BF4C46F1949DDA2C7AA5 /* Pods_SummerSliderDemo.framework */,
115 | );
116 | name = Frameworks;
117 | sourceTree = "";
118 | };
119 | /* End PBXGroup section */
120 |
121 | /* Begin PBXNativeTarget section */
122 | 607FACCF1AFB9204008FA782 /* SummerSliderDemo */ = {
123 | isa = PBXNativeTarget;
124 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SummerSliderDemo" */;
125 | buildPhases = (
126 | 6F2754D16E642F1FCC9D8415 /* [CP] Check Pods Manifest.lock */,
127 | 607FACCC1AFB9204008FA782 /* Sources */,
128 | 607FACCD1AFB9204008FA782 /* Frameworks */,
129 | 607FACCE1AFB9204008FA782 /* Resources */,
130 | ADF4CD189E5D54B9826E2F63 /* [CP] Embed Pods Frameworks */,
131 | 26AAC8F2F453114A1CF908B1 /* [CP] Copy Pods Resources */,
132 | );
133 | buildRules = (
134 | );
135 | dependencies = (
136 | );
137 | name = SummerSliderDemo;
138 | productName = SummerSlider;
139 | productReference = 607FACD01AFB9204008FA782 /* SummerSliderDemo.app */;
140 | productType = "com.apple.product-type.application";
141 | };
142 | /* End PBXNativeTarget section */
143 |
144 | /* Begin PBXProject section */
145 | 607FACC81AFB9204008FA782 /* Project object */ = {
146 | isa = PBXProject;
147 | attributes = {
148 | LastSwiftUpdateCheck = 0720;
149 | LastUpgradeCheck = 0900;
150 | ORGANIZATIONNAME = CocoaPods;
151 | TargetAttributes = {
152 | 607FACCF1AFB9204008FA782 = {
153 | CreatedOnToolsVersion = 6.3.1;
154 | DevelopmentTeam = 5MKPJ9K6N6;
155 | LastSwiftMigration = 0820;
156 | };
157 | };
158 | };
159 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "SummerSliderDemo" */;
160 | compatibilityVersion = "Xcode 3.2";
161 | developmentRegion = English;
162 | hasScannedForEncodings = 0;
163 | knownRegions = (
164 | en,
165 | Base,
166 | );
167 | mainGroup = 607FACC71AFB9204008FA782;
168 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */;
169 | projectDirPath = "";
170 | projectRoot = "";
171 | targets = (
172 | 607FACCF1AFB9204008FA782 /* SummerSliderDemo */,
173 | );
174 | };
175 | /* End PBXProject section */
176 |
177 | /* Begin PBXResourcesBuildPhase section */
178 | 607FACCE1AFB9204008FA782 /* Resources */ = {
179 | isa = PBXResourcesBuildPhase;
180 | buildActionMask = 2147483647;
181 | files = (
182 | 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */,
183 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */,
184 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */,
185 | );
186 | runOnlyForDeploymentPostprocessing = 0;
187 | };
188 | /* End PBXResourcesBuildPhase section */
189 |
190 | /* Begin PBXShellScriptBuildPhase section */
191 | 26AAC8F2F453114A1CF908B1 /* [CP] Copy Pods Resources */ = {
192 | isa = PBXShellScriptBuildPhase;
193 | buildActionMask = 2147483647;
194 | files = (
195 | );
196 | inputPaths = (
197 | );
198 | name = "[CP] Copy Pods Resources";
199 | outputPaths = (
200 | );
201 | runOnlyForDeploymentPostprocessing = 0;
202 | shellPath = /bin/sh;
203 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SummerSliderDemo/Pods-SummerSliderDemo-resources.sh\"\n";
204 | showEnvVarsInLog = 0;
205 | };
206 | 6F2754D16E642F1FCC9D8415 /* [CP] Check Pods Manifest.lock */ = {
207 | isa = PBXShellScriptBuildPhase;
208 | buildActionMask = 2147483647;
209 | files = (
210 | );
211 | inputPaths = (
212 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
213 | "${PODS_ROOT}/Manifest.lock",
214 | );
215 | name = "[CP] Check Pods Manifest.lock";
216 | outputPaths = (
217 | "$(DERIVED_FILE_DIR)/Pods-SummerSliderDemo-checkManifestLockResult.txt",
218 | );
219 | runOnlyForDeploymentPostprocessing = 0;
220 | shellPath = /bin/sh;
221 | 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";
222 | showEnvVarsInLog = 0;
223 | };
224 | ADF4CD189E5D54B9826E2F63 /* [CP] Embed Pods Frameworks */ = {
225 | isa = PBXShellScriptBuildPhase;
226 | buildActionMask = 2147483647;
227 | files = (
228 | );
229 | inputPaths = (
230 | "${SRCROOT}/Pods/Target Support Files/Pods-SummerSliderDemo/Pods-SummerSliderDemo-frameworks.sh",
231 | "${BUILT_PRODUCTS_DIR}/SummerSlider/SummerSlider.framework",
232 | );
233 | name = "[CP] Embed Pods Frameworks";
234 | outputPaths = (
235 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SummerSlider.framework",
236 | );
237 | runOnlyForDeploymentPostprocessing = 0;
238 | shellPath = /bin/sh;
239 | shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SummerSliderDemo/Pods-SummerSliderDemo-frameworks.sh\"\n";
240 | showEnvVarsInLog = 0;
241 | };
242 | /* End PBXShellScriptBuildPhase section */
243 |
244 | /* Begin PBXSourcesBuildPhase section */
245 | 607FACCC1AFB9204008FA782 /* Sources */ = {
246 | isa = PBXSourcesBuildPhase;
247 | buildActionMask = 2147483647;
248 | files = (
249 | 49FB8EB41F776839008FB0A5 /* YoutubeStyleViewController.swift in Sources */,
250 | 49FB8EB11F77680F008FB0A5 /* VerticalViewController.swift in Sources */,
251 | 607FACD81AFB9204008FA782 /* ViewController.swift in Sources */,
252 | 49FB8EAF1F7767F7008FB0A5 /* HorizontalViewController.swift in Sources */,
253 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */,
254 | );
255 | runOnlyForDeploymentPostprocessing = 0;
256 | };
257 | /* End PBXSourcesBuildPhase section */
258 |
259 | /* Begin PBXVariantGroup section */
260 | 607FACD91AFB9204008FA782 /* Main.storyboard */ = {
261 | isa = PBXVariantGroup;
262 | children = (
263 | 607FACDA1AFB9204008FA782 /* Base */,
264 | );
265 | name = Main.storyboard;
266 | sourceTree = "";
267 | };
268 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = {
269 | isa = PBXVariantGroup;
270 | children = (
271 | 607FACDF1AFB9204008FA782 /* Base */,
272 | );
273 | name = LaunchScreen.xib;
274 | sourceTree = "";
275 | };
276 | /* End PBXVariantGroup section */
277 |
278 | /* Begin XCBuildConfiguration section */
279 | 607FACED1AFB9204008FA782 /* Debug */ = {
280 | isa = XCBuildConfiguration;
281 | buildSettings = {
282 | ALWAYS_SEARCH_USER_PATHS = NO;
283 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
284 | CLANG_CXX_LIBRARY = "libc++";
285 | CLANG_ENABLE_MODULES = YES;
286 | CLANG_ENABLE_OBJC_ARC = YES;
287 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
288 | CLANG_WARN_BOOL_CONVERSION = YES;
289 | CLANG_WARN_COMMA = YES;
290 | CLANG_WARN_CONSTANT_CONVERSION = YES;
291 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
292 | CLANG_WARN_EMPTY_BODY = YES;
293 | CLANG_WARN_ENUM_CONVERSION = YES;
294 | CLANG_WARN_INFINITE_RECURSION = YES;
295 | CLANG_WARN_INT_CONVERSION = YES;
296 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
297 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
298 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
299 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
300 | CLANG_WARN_STRICT_PROTOTYPES = YES;
301 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
302 | CLANG_WARN_UNREACHABLE_CODE = YES;
303 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
304 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
305 | COPY_PHASE_STRIP = NO;
306 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
307 | ENABLE_STRICT_OBJC_MSGSEND = YES;
308 | ENABLE_TESTABILITY = YES;
309 | GCC_C_LANGUAGE_STANDARD = gnu99;
310 | GCC_DYNAMIC_NO_PIC = NO;
311 | GCC_NO_COMMON_BLOCKS = YES;
312 | GCC_OPTIMIZATION_LEVEL = 0;
313 | GCC_PREPROCESSOR_DEFINITIONS = (
314 | "DEBUG=1",
315 | "$(inherited)",
316 | );
317 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
318 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
319 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
320 | GCC_WARN_UNDECLARED_SELECTOR = YES;
321 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
322 | GCC_WARN_UNUSED_FUNCTION = YES;
323 | GCC_WARN_UNUSED_VARIABLE = YES;
324 | IPHONEOS_DEPLOYMENT_TARGET = 8.3;
325 | MTL_ENABLE_DEBUG_INFO = YES;
326 | ONLY_ACTIVE_ARCH = YES;
327 | SDKROOT = iphoneos;
328 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
329 | SWIFT_VERSION = 4.0;
330 | };
331 | name = Debug;
332 | };
333 | 607FACEE1AFB9204008FA782 /* Release */ = {
334 | isa = XCBuildConfiguration;
335 | buildSettings = {
336 | ALWAYS_SEARCH_USER_PATHS = NO;
337 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
338 | CLANG_CXX_LIBRARY = "libc++";
339 | CLANG_ENABLE_MODULES = YES;
340 | CLANG_ENABLE_OBJC_ARC = YES;
341 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
342 | CLANG_WARN_BOOL_CONVERSION = YES;
343 | CLANG_WARN_COMMA = YES;
344 | CLANG_WARN_CONSTANT_CONVERSION = YES;
345 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
346 | CLANG_WARN_EMPTY_BODY = YES;
347 | CLANG_WARN_ENUM_CONVERSION = YES;
348 | CLANG_WARN_INFINITE_RECURSION = YES;
349 | CLANG_WARN_INT_CONVERSION = YES;
350 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
351 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
352 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
353 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
354 | CLANG_WARN_STRICT_PROTOTYPES = YES;
355 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
356 | CLANG_WARN_UNREACHABLE_CODE = YES;
357 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
358 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
359 | COPY_PHASE_STRIP = NO;
360 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
361 | ENABLE_NS_ASSERTIONS = NO;
362 | ENABLE_STRICT_OBJC_MSGSEND = YES;
363 | GCC_C_LANGUAGE_STANDARD = gnu99;
364 | GCC_NO_COMMON_BLOCKS = YES;
365 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
366 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
367 | GCC_WARN_UNDECLARED_SELECTOR = YES;
368 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
369 | GCC_WARN_UNUSED_FUNCTION = YES;
370 | GCC_WARN_UNUSED_VARIABLE = YES;
371 | IPHONEOS_DEPLOYMENT_TARGET = 8.3;
372 | MTL_ENABLE_DEBUG_INFO = NO;
373 | SDKROOT = iphoneos;
374 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
375 | SWIFT_VERSION = 4.0;
376 | VALIDATE_PRODUCT = YES;
377 | };
378 | name = Release;
379 | };
380 | 607FACF01AFB9204008FA782 /* Debug */ = {
381 | isa = XCBuildConfiguration;
382 | baseConfigurationReference = 12B5B990C446EC86F65C37BD /* Pods-SummerSliderDemo.debug.xcconfig */;
383 | buildSettings = {
384 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
385 | DEVELOPMENT_TEAM = 5MKPJ9K6N6;
386 | INFOPLIST_FILE = SummerSlider/Info.plist;
387 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
388 | MODULE_NAME = ExampleApp;
389 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
390 | PRODUCT_NAME = "$(TARGET_NAME)";
391 | SWIFT_VERSION = 4.0;
392 | };
393 | name = Debug;
394 | };
395 | 607FACF11AFB9204008FA782 /* Release */ = {
396 | isa = XCBuildConfiguration;
397 | baseConfigurationReference = 1E7663A3F9C37820BBE7327C /* Pods-SummerSliderDemo.release.xcconfig */;
398 | buildSettings = {
399 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
400 | DEVELOPMENT_TEAM = 5MKPJ9K6N6;
401 | INFOPLIST_FILE = SummerSlider/Info.plist;
402 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
403 | MODULE_NAME = ExampleApp;
404 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
405 | PRODUCT_NAME = "$(TARGET_NAME)";
406 | SWIFT_VERSION = 4.0;
407 | };
408 | name = Release;
409 | };
410 | /* End XCBuildConfiguration section */
411 |
412 | /* Begin XCConfigurationList section */
413 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "SummerSliderDemo" */ = {
414 | isa = XCConfigurationList;
415 | buildConfigurations = (
416 | 607FACED1AFB9204008FA782 /* Debug */,
417 | 607FACEE1AFB9204008FA782 /* Release */,
418 | );
419 | defaultConfigurationIsVisible = 0;
420 | defaultConfigurationName = Release;
421 | };
422 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "SummerSliderDemo" */ = {
423 | isa = XCConfigurationList;
424 | buildConfigurations = (
425 | 607FACF01AFB9204008FA782 /* Debug */,
426 | 607FACF11AFB9204008FA782 /* Release */,
427 | );
428 | defaultConfigurationIsVisible = 0;
429 | defaultConfigurationName = Release;
430 | };
431 | /* End XCConfigurationList section */
432 | };
433 | rootObject = 607FACC81AFB9204008FA782 /* Project object */;
434 | }
435 |
--------------------------------------------------------------------------------
/SummerSlider.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 4968C8A71F77A88400C48278 /* SummerSlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 4968C8A51F77A88400C48278 /* SummerSlider.h */; settings = {ATTRIBUTES = (Public, ); }; };
11 | 4968C8AF1F77A8DB00C48278 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4968C8AD1F77A8DB00C48278 /* Constants.swift */; };
12 | 4968C8B01F77A8DB00C48278 /* SummerSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4968C8AE1F77A8DB00C48278 /* SummerSlider.swift */; };
13 | 4968C8FC1F77AAD300C48278 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4968C8FB1F77AAD300C48278 /* AppDelegate.swift */; };
14 | 4968C9011F77AAD300C48278 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4968C8FF1F77AAD300C48278 /* Main.storyboard */; };
15 | 4968C9031F77AAD300C48278 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4968C9021F77AAD300C48278 /* Assets.xcassets */; };
16 | 4968C9061F77AAD300C48278 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4968C9041F77AAD300C48278 /* LaunchScreen.storyboard */; };
17 | 4968C90B1F77AADE00C48278 /* SummerSlider.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4968C8A21F77A88300C48278 /* SummerSlider.framework */; };
18 | 4968C90C1F77AADE00C48278 /* SummerSlider.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4968C8A21F77A88300C48278 /* SummerSlider.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
19 | 49A7BA9F1F79298500997EC3 /* SummerSliderTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49A7BA9E1F79298500997EC3 /* SummerSliderTypes.swift */; };
20 | 49A7BAA51F7A55EC00997EC3 /* HorizontalSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49A7BAA01F7A55EC00997EC3 /* HorizontalSlider.swift */; };
21 | 49A7BAA61F7A55EC00997EC3 /* Slider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49A7BAA11F7A55EC00997EC3 /* Slider.swift */; };
22 | 49A7BAA71F7A55EC00997EC3 /* SliderDrawingProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49A7BAA21F7A55EC00997EC3 /* SliderDrawingProtocol.swift */; };
23 | 49A7BAA81F7A55EC00997EC3 /* SliderFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49A7BAA31F7A55EC00997EC3 /* SliderFactory.swift */; };
24 | 49A7BAA91F7A55EC00997EC3 /* VerticalSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49A7BAA41F7A55EC00997EC3 /* VerticalSlider.swift */; };
25 | 49CA0E8E1F78CED9008CA1F2 /* HorizontalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CA0E8B1F78CED9008CA1F2 /* HorizontalViewController.swift */; };
26 | /* End PBXBuildFile section */
27 |
28 | /* Begin PBXContainerItemProxy section */
29 | 4968C90D1F77AADE00C48278 /* PBXContainerItemProxy */ = {
30 | isa = PBXContainerItemProxy;
31 | containerPortal = 4968C8991F77A88300C48278 /* Project object */;
32 | proxyType = 1;
33 | remoteGlobalIDString = 4968C8A11F77A88300C48278;
34 | remoteInfo = SummerSlider;
35 | };
36 | /* End PBXContainerItemProxy section */
37 |
38 | /* Begin PBXCopyFilesBuildPhase section */
39 | 4968C90F1F77AADE00C48278 /* Embed Frameworks */ = {
40 | isa = PBXCopyFilesBuildPhase;
41 | buildActionMask = 2147483647;
42 | dstPath = "";
43 | dstSubfolderSpec = 10;
44 | files = (
45 | 4968C90C1F77AADE00C48278 /* SummerSlider.framework in Embed Frameworks */,
46 | );
47 | name = "Embed Frameworks";
48 | runOnlyForDeploymentPostprocessing = 0;
49 | };
50 | /* End PBXCopyFilesBuildPhase section */
51 |
52 | /* Begin PBXFileReference section */
53 | 4968C8A21F77A88300C48278 /* SummerSlider.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SummerSlider.framework; sourceTree = BUILT_PRODUCTS_DIR; };
54 | 4968C8A51F77A88400C48278 /* SummerSlider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SummerSlider.h; sourceTree = ""; };
55 | 4968C8A61F77A88400C48278 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
56 | 4968C8AD1F77A8DB00C48278 /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; };
57 | 4968C8AE1F77A8DB00C48278 /* SummerSlider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SummerSlider.swift; sourceTree = ""; };
58 | 4968C8F91F77AAD300C48278 /* SummerSliderDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SummerSliderDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
59 | 4968C8FB1F77AAD300C48278 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
60 | 4968C9001F77AAD300C48278 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
61 | 4968C9021F77AAD300C48278 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
62 | 4968C9051F77AAD300C48278 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
63 | 4968C9071F77AAD300C48278 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
64 | 49A7BA9E1F79298500997EC3 /* SummerSliderTypes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SummerSliderTypes.swift; sourceTree = ""; };
65 | 49A7BAA01F7A55EC00997EC3 /* HorizontalSlider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalSlider.swift; sourceTree = ""; };
66 | 49A7BAA11F7A55EC00997EC3 /* Slider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Slider.swift; sourceTree = ""; };
67 | 49A7BAA21F7A55EC00997EC3 /* SliderDrawingProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SliderDrawingProtocol.swift; sourceTree = ""; };
68 | 49A7BAA31F7A55EC00997EC3 /* SliderFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SliderFactory.swift; sourceTree = ""; };
69 | 49A7BAA41F7A55EC00997EC3 /* VerticalSlider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VerticalSlider.swift; sourceTree = ""; };
70 | 49CA0E8B1F78CED9008CA1F2 /* HorizontalViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HorizontalViewController.swift; sourceTree = ""; };
71 | /* End PBXFileReference section */
72 |
73 | /* Begin PBXFrameworksBuildPhase section */
74 | 4968C89E1F77A88300C48278 /* Frameworks */ = {
75 | isa = PBXFrameworksBuildPhase;
76 | buildActionMask = 2147483647;
77 | files = (
78 | );
79 | runOnlyForDeploymentPostprocessing = 0;
80 | };
81 | 4968C8F61F77AAD300C48278 /* Frameworks */ = {
82 | isa = PBXFrameworksBuildPhase;
83 | buildActionMask = 2147483647;
84 | files = (
85 | 4968C90B1F77AADE00C48278 /* SummerSlider.framework in Frameworks */,
86 | );
87 | runOnlyForDeploymentPostprocessing = 0;
88 | };
89 | /* End PBXFrameworksBuildPhase section */
90 |
91 | /* Begin PBXGroup section */
92 | 4968C8981F77A88300C48278 = {
93 | isa = PBXGroup;
94 | children = (
95 | 4968C8A41F77A88400C48278 /* SummerSlider */,
96 | 4968C8FA1F77AAD300C48278 /* SummerSliderDemo */,
97 | 4968C8A31F77A88300C48278 /* Products */,
98 | );
99 | sourceTree = "";
100 | };
101 | 4968C8A31F77A88300C48278 /* Products */ = {
102 | isa = PBXGroup;
103 | children = (
104 | 4968C8A21F77A88300C48278 /* SummerSlider.framework */,
105 | 4968C8F91F77AAD300C48278 /* SummerSliderDemo.app */,
106 | );
107 | name = Products;
108 | sourceTree = "";
109 | };
110 | 4968C8A41F77A88400C48278 /* SummerSlider */ = {
111 | isa = PBXGroup;
112 | children = (
113 | 49A7BAA01F7A55EC00997EC3 /* HorizontalSlider.swift */,
114 | 49A7BAA11F7A55EC00997EC3 /* Slider.swift */,
115 | 49A7BAA21F7A55EC00997EC3 /* SliderDrawingProtocol.swift */,
116 | 49A7BAA31F7A55EC00997EC3 /* SliderFactory.swift */,
117 | 49A7BAA41F7A55EC00997EC3 /* VerticalSlider.swift */,
118 | 49A7BA9E1F79298500997EC3 /* SummerSliderTypes.swift */,
119 | 4968C8AD1F77A8DB00C48278 /* Constants.swift */,
120 | 4968C8AE1F77A8DB00C48278 /* SummerSlider.swift */,
121 | 4968C8A51F77A88400C48278 /* SummerSlider.h */,
122 | 4968C8A61F77A88400C48278 /* Info.plist */,
123 | );
124 | path = SummerSlider;
125 | sourceTree = "";
126 | };
127 | 4968C8FA1F77AAD300C48278 /* SummerSliderDemo */ = {
128 | isa = PBXGroup;
129 | children = (
130 | 4968C9101F77B84300C48278 /* ViewControllers */,
131 | 4968C8FB1F77AAD300C48278 /* AppDelegate.swift */,
132 | 4968C8FF1F77AAD300C48278 /* Main.storyboard */,
133 | 4968C9021F77AAD300C48278 /* Assets.xcassets */,
134 | 4968C9041F77AAD300C48278 /* LaunchScreen.storyboard */,
135 | 4968C9071F77AAD300C48278 /* Info.plist */,
136 | );
137 | path = SummerSliderDemo;
138 | sourceTree = "";
139 | };
140 | 4968C9101F77B84300C48278 /* ViewControllers */ = {
141 | isa = PBXGroup;
142 | children = (
143 | 49CA0E8B1F78CED9008CA1F2 /* HorizontalViewController.swift */,
144 | );
145 | name = ViewControllers;
146 | sourceTree = "";
147 | };
148 | /* End PBXGroup section */
149 |
150 | /* Begin PBXHeadersBuildPhase section */
151 | 4968C89F1F77A88300C48278 /* Headers */ = {
152 | isa = PBXHeadersBuildPhase;
153 | buildActionMask = 2147483647;
154 | files = (
155 | 4968C8A71F77A88400C48278 /* SummerSlider.h in Headers */,
156 | );
157 | runOnlyForDeploymentPostprocessing = 0;
158 | };
159 | /* End PBXHeadersBuildPhase section */
160 |
161 | /* Begin PBXNativeTarget section */
162 | 4968C8A11F77A88300C48278 /* SummerSlider */ = {
163 | isa = PBXNativeTarget;
164 | buildConfigurationList = 4968C8AA1F77A88400C48278 /* Build configuration list for PBXNativeTarget "SummerSlider" */;
165 | buildPhases = (
166 | 4968C89D1F77A88300C48278 /* Sources */,
167 | 4968C89E1F77A88300C48278 /* Frameworks */,
168 | 4968C89F1F77A88300C48278 /* Headers */,
169 | 4968C8A01F77A88300C48278 /* Resources */,
170 | );
171 | buildRules = (
172 | );
173 | dependencies = (
174 | );
175 | name = SummerSlider;
176 | productName = SummerSlider;
177 | productReference = 4968C8A21F77A88300C48278 /* SummerSlider.framework */;
178 | productType = "com.apple.product-type.framework";
179 | };
180 | 4968C8F81F77AAD300C48278 /* SummerSliderDemo */ = {
181 | isa = PBXNativeTarget;
182 | buildConfigurationList = 4968C90A1F77AAD300C48278 /* Build configuration list for PBXNativeTarget "SummerSliderDemo" */;
183 | buildPhases = (
184 | 4968C8F51F77AAD300C48278 /* Sources */,
185 | 4968C8F61F77AAD300C48278 /* Frameworks */,
186 | 4968C8F71F77AAD300C48278 /* Resources */,
187 | 4968C90F1F77AADE00C48278 /* Embed Frameworks */,
188 | );
189 | buildRules = (
190 | );
191 | dependencies = (
192 | 4968C90E1F77AADE00C48278 /* PBXTargetDependency */,
193 | );
194 | name = SummerSliderDemo;
195 | productName = SummerSliderDemo;
196 | productReference = 4968C8F91F77AAD300C48278 /* SummerSliderDemo.app */;
197 | productType = "com.apple.product-type.application";
198 | };
199 | /* End PBXNativeTarget section */
200 |
201 | /* Begin PBXProject section */
202 | 4968C8991F77A88300C48278 /* Project object */ = {
203 | isa = PBXProject;
204 | attributes = {
205 | LastSwiftUpdateCheck = 0830;
206 | LastUpgradeCheck = 1030;
207 | ORGANIZATIONNAME = SuperbDerrick;
208 | TargetAttributes = {
209 | 4968C8A11F77A88300C48278 = {
210 | CreatedOnToolsVersion = 8.3.2;
211 | DevelopmentTeam = 5MKPJ9K6N6;
212 | LastSwiftMigration = 1030;
213 | ProvisioningStyle = Automatic;
214 | };
215 | 4968C8F81F77AAD300C48278 = {
216 | CreatedOnToolsVersion = 8.3.2;
217 | LastSwiftMigration = 1030;
218 | ProvisioningStyle = Automatic;
219 | };
220 | };
221 | };
222 | buildConfigurationList = 4968C89C1F77A88300C48278 /* Build configuration list for PBXProject "SummerSlider" */;
223 | compatibilityVersion = "Xcode 3.2";
224 | developmentRegion = en;
225 | hasScannedForEncodings = 0;
226 | knownRegions = (
227 | en,
228 | Base,
229 | );
230 | mainGroup = 4968C8981F77A88300C48278;
231 | productRefGroup = 4968C8A31F77A88300C48278 /* Products */;
232 | projectDirPath = "";
233 | projectRoot = "";
234 | targets = (
235 | 4968C8A11F77A88300C48278 /* SummerSlider */,
236 | 4968C8F81F77AAD300C48278 /* SummerSliderDemo */,
237 | );
238 | };
239 | /* End PBXProject section */
240 |
241 | /* Begin PBXResourcesBuildPhase section */
242 | 4968C8A01F77A88300C48278 /* Resources */ = {
243 | isa = PBXResourcesBuildPhase;
244 | buildActionMask = 2147483647;
245 | files = (
246 | );
247 | runOnlyForDeploymentPostprocessing = 0;
248 | };
249 | 4968C8F71F77AAD300C48278 /* Resources */ = {
250 | isa = PBXResourcesBuildPhase;
251 | buildActionMask = 2147483647;
252 | files = (
253 | 4968C9061F77AAD300C48278 /* LaunchScreen.storyboard in Resources */,
254 | 4968C9031F77AAD300C48278 /* Assets.xcassets in Resources */,
255 | 4968C9011F77AAD300C48278 /* Main.storyboard in Resources */,
256 | );
257 | runOnlyForDeploymentPostprocessing = 0;
258 | };
259 | /* End PBXResourcesBuildPhase section */
260 |
261 | /* Begin PBXSourcesBuildPhase section */
262 | 4968C89D1F77A88300C48278 /* Sources */ = {
263 | isa = PBXSourcesBuildPhase;
264 | buildActionMask = 2147483647;
265 | files = (
266 | 4968C8AF1F77A8DB00C48278 /* Constants.swift in Sources */,
267 | 49A7BAA81F7A55EC00997EC3 /* SliderFactory.swift in Sources */,
268 | 49A7BAA71F7A55EC00997EC3 /* SliderDrawingProtocol.swift in Sources */,
269 | 49A7BA9F1F79298500997EC3 /* SummerSliderTypes.swift in Sources */,
270 | 49A7BAA91F7A55EC00997EC3 /* VerticalSlider.swift in Sources */,
271 | 49A7BAA51F7A55EC00997EC3 /* HorizontalSlider.swift in Sources */,
272 | 4968C8B01F77A8DB00C48278 /* SummerSlider.swift in Sources */,
273 | 49A7BAA61F7A55EC00997EC3 /* Slider.swift in Sources */,
274 | );
275 | runOnlyForDeploymentPostprocessing = 0;
276 | };
277 | 4968C8F51F77AAD300C48278 /* Sources */ = {
278 | isa = PBXSourcesBuildPhase;
279 | buildActionMask = 2147483647;
280 | files = (
281 | 49CA0E8E1F78CED9008CA1F2 /* HorizontalViewController.swift in Sources */,
282 | 4968C8FC1F77AAD300C48278 /* AppDelegate.swift in Sources */,
283 | );
284 | runOnlyForDeploymentPostprocessing = 0;
285 | };
286 | /* End PBXSourcesBuildPhase section */
287 |
288 | /* Begin PBXTargetDependency section */
289 | 4968C90E1F77AADE00C48278 /* PBXTargetDependency */ = {
290 | isa = PBXTargetDependency;
291 | target = 4968C8A11F77A88300C48278 /* SummerSlider */;
292 | targetProxy = 4968C90D1F77AADE00C48278 /* PBXContainerItemProxy */;
293 | };
294 | /* End PBXTargetDependency section */
295 |
296 | /* Begin PBXVariantGroup section */
297 | 4968C8FF1F77AAD300C48278 /* Main.storyboard */ = {
298 | isa = PBXVariantGroup;
299 | children = (
300 | 4968C9001F77AAD300C48278 /* Base */,
301 | );
302 | name = Main.storyboard;
303 | sourceTree = "";
304 | };
305 | 4968C9041F77AAD300C48278 /* LaunchScreen.storyboard */ = {
306 | isa = PBXVariantGroup;
307 | children = (
308 | 4968C9051F77AAD300C48278 /* Base */,
309 | );
310 | name = LaunchScreen.storyboard;
311 | sourceTree = "";
312 | };
313 | /* End PBXVariantGroup section */
314 |
315 | /* Begin XCBuildConfiguration section */
316 | 4968C8A81F77A88400C48278 /* Debug */ = {
317 | isa = XCBuildConfiguration;
318 | buildSettings = {
319 | ALWAYS_SEARCH_USER_PATHS = NO;
320 | CLANG_ANALYZER_NONNULL = YES;
321 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
322 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
323 | CLANG_CXX_LIBRARY = "libc++";
324 | CLANG_ENABLE_MODULES = YES;
325 | CLANG_ENABLE_OBJC_ARC = YES;
326 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
327 | CLANG_WARN_BOOL_CONVERSION = YES;
328 | CLANG_WARN_COMMA = YES;
329 | CLANG_WARN_CONSTANT_CONVERSION = YES;
330 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
331 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
332 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
333 | CLANG_WARN_EMPTY_BODY = YES;
334 | CLANG_WARN_ENUM_CONVERSION = YES;
335 | CLANG_WARN_INFINITE_RECURSION = YES;
336 | CLANG_WARN_INT_CONVERSION = YES;
337 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
338 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
339 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
340 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
341 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
342 | CLANG_WARN_STRICT_PROTOTYPES = YES;
343 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
344 | CLANG_WARN_UNREACHABLE_CODE = YES;
345 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
346 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
347 | COPY_PHASE_STRIP = NO;
348 | CURRENT_PROJECT_VERSION = 1;
349 | DEBUG_INFORMATION_FORMAT = dwarf;
350 | ENABLE_STRICT_OBJC_MSGSEND = YES;
351 | ENABLE_TESTABILITY = YES;
352 | GCC_C_LANGUAGE_STANDARD = gnu99;
353 | GCC_DYNAMIC_NO_PIC = NO;
354 | GCC_NO_COMMON_BLOCKS = YES;
355 | GCC_OPTIMIZATION_LEVEL = 0;
356 | GCC_PREPROCESSOR_DEFINITIONS = (
357 | "DEBUG=1",
358 | "$(inherited)",
359 | );
360 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
361 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
362 | GCC_WARN_UNDECLARED_SELECTOR = YES;
363 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
364 | GCC_WARN_UNUSED_FUNCTION = YES;
365 | GCC_WARN_UNUSED_VARIABLE = YES;
366 | IPHONEOS_DEPLOYMENT_TARGET = 10.3;
367 | MTL_ENABLE_DEBUG_INFO = YES;
368 | ONLY_ACTIVE_ARCH = YES;
369 | SDKROOT = iphoneos;
370 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
371 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
372 | SWIFT_VERSION = 4.0;
373 | TARGETED_DEVICE_FAMILY = "1,2";
374 | VERSIONING_SYSTEM = "apple-generic";
375 | VERSION_INFO_PREFIX = "";
376 | };
377 | name = Debug;
378 | };
379 | 4968C8A91F77A88400C48278 /* Release */ = {
380 | isa = XCBuildConfiguration;
381 | buildSettings = {
382 | ALWAYS_SEARCH_USER_PATHS = NO;
383 | CLANG_ANALYZER_NONNULL = YES;
384 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
385 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
386 | CLANG_CXX_LIBRARY = "libc++";
387 | CLANG_ENABLE_MODULES = YES;
388 | CLANG_ENABLE_OBJC_ARC = YES;
389 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
390 | CLANG_WARN_BOOL_CONVERSION = YES;
391 | CLANG_WARN_COMMA = YES;
392 | CLANG_WARN_CONSTANT_CONVERSION = YES;
393 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
394 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
395 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
396 | CLANG_WARN_EMPTY_BODY = YES;
397 | CLANG_WARN_ENUM_CONVERSION = YES;
398 | CLANG_WARN_INFINITE_RECURSION = YES;
399 | CLANG_WARN_INT_CONVERSION = YES;
400 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
401 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
402 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
403 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
404 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
405 | CLANG_WARN_STRICT_PROTOTYPES = YES;
406 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
407 | CLANG_WARN_UNREACHABLE_CODE = YES;
408 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
409 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
410 | COPY_PHASE_STRIP = NO;
411 | CURRENT_PROJECT_VERSION = 1;
412 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
413 | ENABLE_NS_ASSERTIONS = NO;
414 | ENABLE_STRICT_OBJC_MSGSEND = YES;
415 | GCC_C_LANGUAGE_STANDARD = gnu99;
416 | GCC_NO_COMMON_BLOCKS = YES;
417 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
418 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
419 | GCC_WARN_UNDECLARED_SELECTOR = YES;
420 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
421 | GCC_WARN_UNUSED_FUNCTION = YES;
422 | GCC_WARN_UNUSED_VARIABLE = YES;
423 | IPHONEOS_DEPLOYMENT_TARGET = 10.3;
424 | MTL_ENABLE_DEBUG_INFO = NO;
425 | SDKROOT = iphoneos;
426 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
427 | SWIFT_VERSION = 4.0;
428 | TARGETED_DEVICE_FAMILY = "1,2";
429 | VALIDATE_PRODUCT = YES;
430 | VERSIONING_SYSTEM = "apple-generic";
431 | VERSION_INFO_PREFIX = "";
432 | };
433 | name = Release;
434 | };
435 | 4968C8AB1F77A88400C48278 /* Debug */ = {
436 | isa = XCBuildConfiguration;
437 | buildSettings = {
438 | CLANG_ENABLE_MODULES = YES;
439 | CODE_SIGN_IDENTITY = "";
440 | DEFINES_MODULE = YES;
441 | DEVELOPMENT_TEAM = 5MKPJ9K6N6;
442 | DYLIB_COMPATIBILITY_VERSION = 1;
443 | DYLIB_CURRENT_VERSION = 1;
444 | DYLIB_INSTALL_NAME_BASE = "@rpath";
445 | INFOPLIST_FILE = SummerSlider/Info.plist;
446 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
447 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
448 | PRODUCT_BUNDLE_IDENTIFIER = superbderrick.github.io.SummerSlider;
449 | PRODUCT_NAME = "$(TARGET_NAME)";
450 | SKIP_INSTALL = YES;
451 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
452 | SWIFT_VERSION = 5.0;
453 | };
454 | name = Debug;
455 | };
456 | 4968C8AC1F77A88400C48278 /* Release */ = {
457 | isa = XCBuildConfiguration;
458 | buildSettings = {
459 | CLANG_ENABLE_MODULES = YES;
460 | CODE_SIGN_IDENTITY = "";
461 | DEFINES_MODULE = YES;
462 | DEVELOPMENT_TEAM = 5MKPJ9K6N6;
463 | DYLIB_COMPATIBILITY_VERSION = 1;
464 | DYLIB_CURRENT_VERSION = 1;
465 | DYLIB_INSTALL_NAME_BASE = "@rpath";
466 | INFOPLIST_FILE = SummerSlider/Info.plist;
467 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
468 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
469 | PRODUCT_BUNDLE_IDENTIFIER = superbderrick.github.io.SummerSlider;
470 | PRODUCT_NAME = "$(TARGET_NAME)";
471 | SKIP_INSTALL = YES;
472 | SWIFT_VERSION = 5.0;
473 | };
474 | name = Release;
475 | };
476 | 4968C9081F77AAD300C48278 /* Debug */ = {
477 | isa = XCBuildConfiguration;
478 | buildSettings = {
479 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
480 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
481 | DEVELOPMENT_TEAM = "";
482 | INFOPLIST_FILE = SummerSliderDemo/Info.plist;
483 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
484 | PRODUCT_BUNDLE_IDENTIFIER = superbderrick.github.io.SummerSliderDemo;
485 | PRODUCT_NAME = "$(TARGET_NAME)";
486 | SWIFT_VERSION = 5.0;
487 | };
488 | name = Debug;
489 | };
490 | 4968C9091F77AAD300C48278 /* Release */ = {
491 | isa = XCBuildConfiguration;
492 | buildSettings = {
493 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
494 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
495 | DEVELOPMENT_TEAM = "";
496 | INFOPLIST_FILE = SummerSliderDemo/Info.plist;
497 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
498 | PRODUCT_BUNDLE_IDENTIFIER = superbderrick.github.io.SummerSliderDemo;
499 | PRODUCT_NAME = "$(TARGET_NAME)";
500 | SWIFT_VERSION = 5.0;
501 | };
502 | name = Release;
503 | };
504 | /* End XCBuildConfiguration section */
505 |
506 | /* Begin XCConfigurationList section */
507 | 4968C89C1F77A88300C48278 /* Build configuration list for PBXProject "SummerSlider" */ = {
508 | isa = XCConfigurationList;
509 | buildConfigurations = (
510 | 4968C8A81F77A88400C48278 /* Debug */,
511 | 4968C8A91F77A88400C48278 /* Release */,
512 | );
513 | defaultConfigurationIsVisible = 0;
514 | defaultConfigurationName = Release;
515 | };
516 | 4968C8AA1F77A88400C48278 /* Build configuration list for PBXNativeTarget "SummerSlider" */ = {
517 | isa = XCConfigurationList;
518 | buildConfigurations = (
519 | 4968C8AB1F77A88400C48278 /* Debug */,
520 | 4968C8AC1F77A88400C48278 /* Release */,
521 | );
522 | defaultConfigurationIsVisible = 0;
523 | defaultConfigurationName = Release;
524 | };
525 | 4968C90A1F77AAD300C48278 /* Build configuration list for PBXNativeTarget "SummerSliderDemo" */ = {
526 | isa = XCConfigurationList;
527 | buildConfigurations = (
528 | 4968C9081F77AAD300C48278 /* Debug */,
529 | 4968C9091F77AAD300C48278 /* Release */,
530 | );
531 | defaultConfigurationIsVisible = 0;
532 | defaultConfigurationName = Release;
533 | };
534 | /* End XCConfigurationList section */
535 | };
536 | rootObject = 4968C8991F77A88300C48278 /* Project object */;
537 | }
538 |
--------------------------------------------------------------------------------