├── Onboarding
├── Assets.xcassets
│ ├── Contents.json
│ ├── brush.imageset
│ │ ├── brush.png
│ │ ├── brush@2x.png
│ │ ├── brush@3x.png
│ │ └── Contents.json
│ ├── rocket.imageset
│ │ ├── rocket.png
│ │ ├── rocket@2x.png
│ │ ├── rocket@3x.png
│ │ └── Contents.json
│ ├── notification.imageset
│ │ ├── notification.png
│ │ ├── notification@2x.png
│ │ ├── notification@3x.png
│ │ └── Contents.json
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── onboardicons
│ ├── brush.png
│ ├── rocket.png
│ ├── brush@2x.png
│ ├── brush@3x.png
│ ├── rocket@2x.png
│ ├── rocket@3x.png
│ ├── notification.png
│ ├── notification@2x.png
│ └── notification@3x.png
├── OnboardingView.swift
├── Info.plist
├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── AppDelegate.swift
└── ViewController.swift
├── Carthage
└── Build
│ └── iOS
│ └── PaperOnboarding.framework
│ ├── Info.plist
│ ├── PaperOnboarding
│ ├── Modules
│ ├── PaperOnboarding.swiftmodule
│ │ ├── arm.swiftdoc
│ │ ├── arm64.swiftdoc
│ │ ├── i386.swiftdoc
│ │ ├── arm.swiftmodule
│ │ ├── i386.swiftmodule
│ │ ├── x86_64.swiftdoc
│ │ ├── arm64.swiftmodule
│ │ └── x86_64.swiftmodule
│ └── module.modulemap
│ └── Headers
│ ├── PaperOnboarding.h
│ └── PaperOnboarding-Swift.h
├── Onboarding.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
├── xcuserdata
│ └── training.xcuserdatad
│ │ └── xcschemes
│ │ ├── xcschememanagement.plist
│ │ └── Onboarding.xcscheme
└── project.pbxproj
└── README.md
/Onboarding/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Onboarding/onboardicons/brush.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/onboardicons/brush.png
--------------------------------------------------------------------------------
/Onboarding/onboardicons/rocket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/onboardicons/rocket.png
--------------------------------------------------------------------------------
/Onboarding/onboardicons/brush@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/onboardicons/brush@2x.png
--------------------------------------------------------------------------------
/Onboarding/onboardicons/brush@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/onboardicons/brush@3x.png
--------------------------------------------------------------------------------
/Onboarding/onboardicons/rocket@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/onboardicons/rocket@2x.png
--------------------------------------------------------------------------------
/Onboarding/onboardicons/rocket@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/onboardicons/rocket@3x.png
--------------------------------------------------------------------------------
/Onboarding/onboardicons/notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/onboardicons/notification.png
--------------------------------------------------------------------------------
/Onboarding/onboardicons/notification@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/onboardicons/notification@2x.png
--------------------------------------------------------------------------------
/Onboarding/onboardicons/notification@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/onboardicons/notification@3x.png
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/brush.imageset/brush.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/Assets.xcassets/brush.imageset/brush.png
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Carthage/Build/iOS/PaperOnboarding.framework/Info.plist
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/brush.imageset/brush@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/Assets.xcassets/brush.imageset/brush@2x.png
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/brush.imageset/brush@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/Assets.xcassets/brush.imageset/brush@3x.png
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/rocket.imageset/rocket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/Assets.xcassets/rocket.imageset/rocket.png
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/rocket.imageset/rocket@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/Assets.xcassets/rocket.imageset/rocket@2x.png
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/rocket.imageset/rocket@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/Assets.xcassets/rocket.imageset/rocket@3x.png
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/PaperOnboarding:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Carthage/Build/iOS/PaperOnboarding.framework/PaperOnboarding
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/notification.imageset/notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/Assets.xcassets/notification.imageset/notification.png
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/notification.imageset/notification@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/Assets.xcassets/notification.imageset/notification@2x.png
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/notification.imageset/notification@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Onboarding/Assets.xcassets/notification.imageset/notification@3x.png
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/arm.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/arm.swiftdoc
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/arm64.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/arm64.swiftdoc
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/i386.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/i386.swiftdoc
--------------------------------------------------------------------------------
/Onboarding.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/arm.swiftmodule:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/arm.swiftmodule
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/i386.swiftmodule:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/i386.swiftmodule
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/x86_64.swiftdoc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/x86_64.swiftdoc
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/arm64.swiftmodule:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/arm64.swiftmodule
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/x86_64.swiftmodule:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/brianadvent/Onboarding/HEAD/Carthage/Build/iOS/PaperOnboarding.framework/Modules/PaperOnboarding.swiftmodule/x86_64.swiftmodule
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module PaperOnboarding {
2 | umbrella header "PaperOnboarding.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
8 | module PaperOnboarding.Swift {
9 | header "PaperOnboarding-Swift.h"
10 | }
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #iOS Swift Tutorial: Material Design Onboarding with Cool Animations
2 |
3 | [Video on YouTube](https://youtu.be/G5UkS4Mrepo)
4 |
5 | In this tutorial you are going to create a great onboarding experience for your app using material design and cool animations. A great onboarding experience lets your users evaluate the value of your app a lot faster.
6 |
7 | ##Resources
8 | https://github.com/Ramotion/paper-onboarding
9 |
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/brush.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "brush.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "brush@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "brush@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/rocket.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "rocket.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "rocket@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "rocket@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Onboarding/Assets.xcassets/notification.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "notification.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "notification@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "notification@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Onboarding/OnboardingView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // OnboardingView.swift
3 | // Onboarding
4 | //
5 | // Created by Training on 20/11/2016.
6 | // Copyright © 2016 Training. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import PaperOnboarding
11 |
12 | class OnboardingView: PaperOnboarding {
13 |
14 | /*
15 | // Only override draw() if you perform custom drawing.
16 | // An empty implementation adversely affects performance during animation.
17 | override func draw(_ rect: CGRect) {
18 | // Drawing code
19 | }
20 | */
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/Onboarding.xcodeproj/xcuserdata/training.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Onboarding.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 868437A71DE2361100202B3C
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Headers/PaperOnboarding.h:
--------------------------------------------------------------------------------
1 | //
2 | // PaperOnboarding.h
3 | // PaperOnboarding
4 | //
5 | // Created by Alex K. on 31/05/16.
6 | // Copyright © 2016 Alex K. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | //! Project version number for PaperOnboarding.
12 | FOUNDATION_EXPORT double PaperOnboardingVersionNumber;
13 |
14 | //! Project version string for PaperOnboarding.
15 | FOUNDATION_EXPORT const unsigned char PaperOnboardingVersionString[];
16 |
17 | // In this header, you should import all the public headers of your framework using statements like #import
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Onboarding/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 | "info" : {
45 | "version" : 1,
46 | "author" : "xcode"
47 | }
48 | }
--------------------------------------------------------------------------------
/Onboarding/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 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/Onboarding/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 |
--------------------------------------------------------------------------------
/Onboarding/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // Onboarding
4 | //
5 | // Created by Training on 20/11/2016.
6 | // Copyright © 2016 Training. 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 |
19 | window = UIWindow(frame: UIScreen.main.bounds)
20 |
21 | let sb = UIStoryboard(name: "Main", bundle: nil)
22 | var initialViewController = sb.instantiateViewController(withIdentifier: "Onboarding")
23 |
24 | let userDefaults = UserDefaults.standard
25 |
26 | if userDefaults.bool(forKey: "onboardingComplete") {
27 | initialViewController = sb.instantiateViewController(withIdentifier: "Mainapp")
28 | }
29 |
30 |
31 | window?.rootViewController = initialViewController
32 | window?.makeKeyAndVisible()
33 |
34 |
35 |
36 | return true
37 | }
38 |
39 | func applicationWillResignActive(_ application: UIApplication) {
40 | // 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.
41 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
42 | }
43 |
44 | func applicationDidEnterBackground(_ application: UIApplication) {
45 | // 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.
46 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
47 | }
48 |
49 | func applicationWillEnterForeground(_ application: UIApplication) {
50 | // 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.
51 | }
52 |
53 | func applicationDidBecomeActive(_ application: UIApplication) {
54 | // 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.
55 | }
56 |
57 | func applicationWillTerminate(_ application: UIApplication) {
58 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
59 | }
60 |
61 |
62 | }
63 |
64 |
--------------------------------------------------------------------------------
/Onboarding/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // Onboarding
4 | //
5 | // Created by Training on 20/11/2016.
6 | // Copyright © 2016 Training. All rights reserved.
7 | //
8 |
9 | import UIKit
10 | import PaperOnboarding
11 |
12 | class ViewController: UIViewController, PaperOnboardingDataSource, PaperOnboardingDelegate {
13 |
14 | @IBOutlet weak var onboardingView: OnboardingView!
15 | @IBOutlet weak var getStartedButton: UIButton!
16 |
17 | override func viewDidLoad() {
18 | super.viewDidLoad()
19 | onboardingView.dataSource = self
20 | onboardingView.delegate = self
21 |
22 |
23 | }
24 |
25 |
26 | func onboardingItemsCount() -> Int {
27 | return 3
28 | }
29 |
30 | func onboardingItemAtIndex(_ index: Int) -> OnboardingItemInfo {
31 | let backgroundColorOne = UIColor(red: 217/255, green: 72/255, blue: 89/255, alpha: 1)
32 | let backgroundColorTwo = UIColor(red: 106/255, green: 166/255, blue: 211/255, alpha: 1)
33 | let backgroundColorThree = UIColor(red: 168/255, green: 200/255, blue: 78/255, alpha: 1)
34 |
35 | let titleFont = UIFont(name: "AvenirNext-Bold", size: 24)!
36 | let descirptionFont = UIFont(name: "AvenirNext-Regular", size: 18)!
37 |
38 | return [("rocket", "A Great Rocket Start", "Caramels cheesecake bonbon bonbon topping. Candy halvah cotton candy chocolate bar cake. Fruitcake liquorice candy canes marshmallow topping powder.", "", backgroundColorOne, UIColor.white, UIColor.white, titleFont, descirptionFont),
39 |
40 | ("brush", "Design your Experience", "Caramels cheesecake bonbon bonbon topping. Candy halvah cotton candy chocolate bar cake. Fruitcake liquorice candy canes marshmallow topping powder.", "", backgroundColorTwo, UIColor.white, UIColor.white, titleFont, descirptionFont),
41 |
42 | ("notification", "Stay Up To Date", "Get notified of important updates.", "", backgroundColorThree, UIColor.white, UIColor.white, titleFont, descirptionFont)][index]
43 |
44 |
45 |
46 | }
47 |
48 |
49 |
50 | func onboardingConfigurationItem(_ item: OnboardingContentViewItem, index: Int) {
51 |
52 | }
53 |
54 |
55 |
56 | func onboardingWillTransitonToIndex(_ index: Int) {
57 | if index == 1 {
58 |
59 | if self.getStartedButton.alpha == 1 {
60 | UIView.animate(withDuration: 0.2, animations: {
61 | self.getStartedButton.alpha = 0
62 | })
63 | }
64 |
65 | }
66 | }
67 |
68 | func onboardingDidTransitonToIndex(_ index: Int) {
69 | if index == 2 {
70 | UIView.animate(withDuration: 0.4, animations: {
71 | self.getStartedButton.alpha = 1
72 | })
73 | }
74 | }
75 |
76 |
77 |
78 | @IBAction func gotStarted(_ sender: Any) {
79 |
80 | let userDefaults = UserDefaults.standard
81 |
82 | userDefaults.set(true, forKey: "onboardingComplete")
83 |
84 | userDefaults.synchronize()
85 |
86 | }
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 | override func didReceiveMemoryWarning() {
97 | super.didReceiveMemoryWarning()
98 | // Dispose of any resources that can be recreated.
99 | }
100 |
101 |
102 | }
103 |
104 |
--------------------------------------------------------------------------------
/Onboarding.xcodeproj/xcuserdata/training.xcuserdatad/xcschemes/Onboarding.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/Onboarding/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 |
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 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/Carthage/Build/iOS/PaperOnboarding.framework/Headers/PaperOnboarding-Swift.h:
--------------------------------------------------------------------------------
1 | // Generated by Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1)
2 | #pragma clang diagnostic push
3 |
4 | #if defined(__has_include) && __has_include()
5 | # include
6 | #endif
7 |
8 | #pragma clang diagnostic ignored "-Wauto-import"
9 | #include
10 | #include
11 | #include
12 | #include
13 |
14 | #if !defined(SWIFT_TYPEDEFS)
15 | # define SWIFT_TYPEDEFS 1
16 | # if defined(__has_include) && __has_include()
17 | # include
18 | # elif !defined(__cplusplus) || __cplusplus < 201103L
19 | typedef uint_least16_t char16_t;
20 | typedef uint_least32_t char32_t;
21 | # endif
22 | typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
23 | typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
24 | typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
25 | typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
26 | typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
27 | typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
28 | typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
29 | typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
30 | typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
31 | typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
32 | typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
33 | typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
34 | #endif
35 |
36 | #if !defined(SWIFT_PASTE)
37 | # define SWIFT_PASTE_HELPER(x, y) x##y
38 | # define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
39 | #endif
40 | #if !defined(SWIFT_METATYPE)
41 | # define SWIFT_METATYPE(X) Class
42 | #endif
43 | #if !defined(SWIFT_CLASS_PROPERTY)
44 | # if __has_feature(objc_class_property)
45 | # define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
46 | # else
47 | # define SWIFT_CLASS_PROPERTY(...)
48 | # endif
49 | #endif
50 |
51 | #if defined(__has_attribute) && __has_attribute(objc_runtime_name)
52 | # define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
53 | #else
54 | # define SWIFT_RUNTIME_NAME(X)
55 | #endif
56 | #if defined(__has_attribute) && __has_attribute(swift_name)
57 | # define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
58 | #else
59 | # define SWIFT_COMPILE_NAME(X)
60 | #endif
61 | #if defined(__has_attribute) && __has_attribute(objc_method_family)
62 | # define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
63 | #else
64 | # define SWIFT_METHOD_FAMILY(X)
65 | #endif
66 | #if defined(__has_attribute) && __has_attribute(noescape)
67 | # define SWIFT_NOESCAPE __attribute__((noescape))
68 | #else
69 | # define SWIFT_NOESCAPE
70 | #endif
71 | #if !defined(SWIFT_CLASS_EXTRA)
72 | # define SWIFT_CLASS_EXTRA
73 | #endif
74 | #if !defined(SWIFT_PROTOCOL_EXTRA)
75 | # define SWIFT_PROTOCOL_EXTRA
76 | #endif
77 | #if !defined(SWIFT_ENUM_EXTRA)
78 | # define SWIFT_ENUM_EXTRA
79 | #endif
80 | #if !defined(SWIFT_CLASS)
81 | # if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
82 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
83 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
84 | # else
85 | # define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
86 | # define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
87 | # endif
88 | #endif
89 |
90 | #if !defined(SWIFT_PROTOCOL)
91 | # define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
92 | # define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
93 | #endif
94 |
95 | #if !defined(SWIFT_EXTENSION)
96 | # define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
97 | #endif
98 |
99 | #if !defined(OBJC_DESIGNATED_INITIALIZER)
100 | # if defined(__has_attribute) && __has_attribute(objc_designated_initializer)
101 | # define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
102 | # else
103 | # define OBJC_DESIGNATED_INITIALIZER
104 | # endif
105 | #endif
106 | #if !defined(SWIFT_ENUM)
107 | # define SWIFT_ENUM(_type, _name) enum _name : _type _name; enum SWIFT_ENUM_EXTRA _name : _type
108 | # if defined(__has_feature) && __has_feature(generalized_swift_name)
109 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_EXTRA _name : _type
110 | # else
111 | # define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name)
112 | # endif
113 | #endif
114 | #if !defined(SWIFT_UNAVAILABLE)
115 | # define SWIFT_UNAVAILABLE __attribute__((unavailable))
116 | #endif
117 | #if defined(__has_feature) && __has_feature(modules)
118 | @import UIKit;
119 | @import CoreGraphics;
120 | #endif
121 |
122 | #pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
123 | #pragma clang diagnostic ignored "-Wduplicate-method-arg"
124 | @class UIImageView;
125 | @class UILabel;
126 | @class NSCoder;
127 |
128 | SWIFT_CLASS("_TtC15PaperOnboarding25OnboardingContentViewItem")
129 | @interface OnboardingContentViewItem : UIView
130 | @property (nonatomic, strong) UIImageView * _Nullable imageView;
131 | @property (nonatomic, strong) UILabel * _Nullable titleLabel;
132 | @property (nonatomic, strong) UILabel * _Nullable descriptionLabel;
133 | - (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
134 | - (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
135 | @end
136 |
137 |
138 | @interface OnboardingContentViewItem (SWIFT_EXTENSION(PaperOnboarding))
139 | @end
140 |
141 |
142 | @interface OnboardingContentViewItem (SWIFT_EXTENSION(PaperOnboarding))
143 | @end
144 |
145 |
146 | /**
147 | An instance of PaperOnboarding which display collection of information.
148 | */
149 | SWIFT_CLASS("_TtC15PaperOnboarding15PaperOnboarding")
150 | @interface PaperOnboarding : UIView
151 | /**
152 | The object that acts as the data source of the PaperOnboardingDataSource.
153 | */
154 | @property (nonatomic, strong) IBOutlet id _Nullable dataSource;
155 | /**
156 | The object that acts as the delegate of the PaperOnboarding. PaperOnboardingDelegate protocol
157 | */
158 | @property (nonatomic, strong) IBOutlet id _Nullable delegate;
159 | /**
160 | current index item
161 | */
162 | @property (nonatomic, readonly) NSInteger currentIndex;
163 | /**
164 | Initializes and returns a PaperOnboarding object with items count.
165 | \param itemsCount The number of items in PaperOnboarding.
166 |
167 |
168 | returns:
169 | Returns an initialized PaperOnboading object
170 | */
171 | - (nonnull instancetype)initWithItemsCount:(NSInteger)itemsCount OBJC_DESIGNATED_INITIALIZER;
172 | - (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
173 | - (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
174 | @end
175 |
176 |
177 | @interface PaperOnboarding (SWIFT_EXTENSION(PaperOnboarding))
178 | @end
179 |
180 |
181 | @interface PaperOnboarding (SWIFT_EXTENSION(PaperOnboarding))
182 | /**
183 | Scrolls through the PaperOnboarding until a index is at a particular location on the screen.
184 | \param index Scrolling to a curretn index item.
185 |
186 | \param animated True if you want to animate the change in position; false if it should be immediate.
187 |
188 | */
189 | - (void)currentIndex:(NSInteger)index animated:(BOOL)animated;
190 | @end
191 |
192 |
193 | @interface PaperOnboarding (SWIFT_EXTENSION(PaperOnboarding))
194 | @end
195 |
196 |
197 | @interface PaperOnboarding (SWIFT_EXTENSION(PaperOnboarding))
198 | @end
199 |
200 |
201 | @interface PaperOnboarding (SWIFT_EXTENSION(PaperOnboarding))
202 | @end
203 |
204 | #pragma clang diagnostic pop
205 |
--------------------------------------------------------------------------------
/Onboarding.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 868437AC1DE2361100202B3C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 868437AB1DE2361100202B3C /* AppDelegate.swift */; };
11 | 868437AE1DE2361100202B3C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 868437AD1DE2361100202B3C /* ViewController.swift */; };
12 | 868437B11DE2361100202B3C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 868437AF1DE2361100202B3C /* Main.storyboard */; };
13 | 868437B31DE2361100202B3C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 868437B21DE2361100202B3C /* Assets.xcassets */; };
14 | 868437B61DE2361100202B3C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 868437B41DE2361100202B3C /* LaunchScreen.storyboard */; };
15 | 868437BE1DE2363800202B3C /* PaperOnboarding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 868437BD1DE2363800202B3C /* PaperOnboarding.framework */; };
16 | 868437BF1DE2363800202B3C /* PaperOnboarding.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 868437BD1DE2363800202B3C /* PaperOnboarding.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
17 | 868437C21DE2382700202B3C /* OnboardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 868437C11DE2382700202B3C /* OnboardingView.swift */; };
18 | 868437CD1DE246F400202B3C /* brush.png in Resources */ = {isa = PBXBuildFile; fileRef = 868437C41DE246F400202B3C /* brush.png */; };
19 | 868437CE1DE246F400202B3C /* brush@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 868437C51DE246F400202B3C /* brush@2x.png */; };
20 | 868437CF1DE246F400202B3C /* brush@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 868437C61DE246F400202B3C /* brush@3x.png */; };
21 | 868437D01DE246F400202B3C /* notification.png in Resources */ = {isa = PBXBuildFile; fileRef = 868437C71DE246F400202B3C /* notification.png */; };
22 | 868437D11DE246F400202B3C /* notification@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 868437C81DE246F400202B3C /* notification@2x.png */; };
23 | 868437D21DE246F400202B3C /* notification@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 868437C91DE246F400202B3C /* notification@3x.png */; };
24 | 868437D31DE246F400202B3C /* rocket.png in Resources */ = {isa = PBXBuildFile; fileRef = 868437CA1DE246F400202B3C /* rocket.png */; };
25 | 868437D41DE246F400202B3C /* rocket@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 868437CB1DE246F400202B3C /* rocket@2x.png */; };
26 | 868437D51DE246F400202B3C /* rocket@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 868437CC1DE246F400202B3C /* rocket@3x.png */; };
27 | /* End PBXBuildFile section */
28 |
29 | /* Begin PBXCopyFilesBuildPhase section */
30 | 868437C01DE2363800202B3C /* Embed Frameworks */ = {
31 | isa = PBXCopyFilesBuildPhase;
32 | buildActionMask = 2147483647;
33 | dstPath = "";
34 | dstSubfolderSpec = 10;
35 | files = (
36 | 868437BF1DE2363800202B3C /* PaperOnboarding.framework in Embed Frameworks */,
37 | );
38 | name = "Embed Frameworks";
39 | runOnlyForDeploymentPostprocessing = 0;
40 | };
41 | /* End PBXCopyFilesBuildPhase section */
42 |
43 | /* Begin PBXFileReference section */
44 | 868437A81DE2361100202B3C /* Onboarding.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Onboarding.app; sourceTree = BUILT_PRODUCTS_DIR; };
45 | 868437AB1DE2361100202B3C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
46 | 868437AD1DE2361100202B3C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
47 | 868437B01DE2361100202B3C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
48 | 868437B21DE2361100202B3C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
49 | 868437B51DE2361100202B3C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
50 | 868437B71DE2361100202B3C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
51 | 868437BD1DE2363800202B3C /* PaperOnboarding.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PaperOnboarding.framework; path = Carthage/Build/iOS/PaperOnboarding.framework; sourceTree = ""; };
52 | 868437C11DE2382700202B3C /* OnboardingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnboardingView.swift; sourceTree = ""; };
53 | 868437C41DE246F400202B3C /* brush.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = brush.png; sourceTree = ""; };
54 | 868437C51DE246F400202B3C /* brush@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "brush@2x.png"; sourceTree = ""; };
55 | 868437C61DE246F400202B3C /* brush@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "brush@3x.png"; sourceTree = ""; };
56 | 868437C71DE246F400202B3C /* notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = notification.png; sourceTree = ""; };
57 | 868437C81DE246F400202B3C /* notification@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "notification@2x.png"; sourceTree = ""; };
58 | 868437C91DE246F400202B3C /* notification@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "notification@3x.png"; sourceTree = ""; };
59 | 868437CA1DE246F400202B3C /* rocket.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rocket.png; sourceTree = ""; };
60 | 868437CB1DE246F400202B3C /* rocket@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "rocket@2x.png"; sourceTree = ""; };
61 | 868437CC1DE246F400202B3C /* rocket@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "rocket@3x.png"; sourceTree = ""; };
62 | /* End PBXFileReference section */
63 |
64 | /* Begin PBXFrameworksBuildPhase section */
65 | 868437A51DE2361100202B3C /* Frameworks */ = {
66 | isa = PBXFrameworksBuildPhase;
67 | buildActionMask = 2147483647;
68 | files = (
69 | 868437BE1DE2363800202B3C /* PaperOnboarding.framework in Frameworks */,
70 | );
71 | runOnlyForDeploymentPostprocessing = 0;
72 | };
73 | /* End PBXFrameworksBuildPhase section */
74 |
75 | /* Begin PBXGroup section */
76 | 8684379F1DE2361100202B3C = {
77 | isa = PBXGroup;
78 | children = (
79 | 868437BD1DE2363800202B3C /* PaperOnboarding.framework */,
80 | 868437AA1DE2361100202B3C /* Onboarding */,
81 | 868437A91DE2361100202B3C /* Products */,
82 | );
83 | sourceTree = "";
84 | };
85 | 868437A91DE2361100202B3C /* Products */ = {
86 | isa = PBXGroup;
87 | children = (
88 | 868437A81DE2361100202B3C /* Onboarding.app */,
89 | );
90 | name = Products;
91 | sourceTree = "";
92 | };
93 | 868437AA1DE2361100202B3C /* Onboarding */ = {
94 | isa = PBXGroup;
95 | children = (
96 | 868437C31DE246F400202B3C /* onboardicons */,
97 | 868437AB1DE2361100202B3C /* AppDelegate.swift */,
98 | 868437AD1DE2361100202B3C /* ViewController.swift */,
99 | 868437C11DE2382700202B3C /* OnboardingView.swift */,
100 | 868437AF1DE2361100202B3C /* Main.storyboard */,
101 | 868437B21DE2361100202B3C /* Assets.xcassets */,
102 | 868437B41DE2361100202B3C /* LaunchScreen.storyboard */,
103 | 868437B71DE2361100202B3C /* Info.plist */,
104 | );
105 | path = Onboarding;
106 | sourceTree = "";
107 | };
108 | 868437C31DE246F400202B3C /* onboardicons */ = {
109 | isa = PBXGroup;
110 | children = (
111 | 868437C41DE246F400202B3C /* brush.png */,
112 | 868437C51DE246F400202B3C /* brush@2x.png */,
113 | 868437C61DE246F400202B3C /* brush@3x.png */,
114 | 868437C71DE246F400202B3C /* notification.png */,
115 | 868437C81DE246F400202B3C /* notification@2x.png */,
116 | 868437C91DE246F400202B3C /* notification@3x.png */,
117 | 868437CA1DE246F400202B3C /* rocket.png */,
118 | 868437CB1DE246F400202B3C /* rocket@2x.png */,
119 | 868437CC1DE246F400202B3C /* rocket@3x.png */,
120 | );
121 | path = onboardicons;
122 | sourceTree = "";
123 | };
124 | /* End PBXGroup section */
125 |
126 | /* Begin PBXNativeTarget section */
127 | 868437A71DE2361100202B3C /* Onboarding */ = {
128 | isa = PBXNativeTarget;
129 | buildConfigurationList = 868437BA1DE2361100202B3C /* Build configuration list for PBXNativeTarget "Onboarding" */;
130 | buildPhases = (
131 | 868437A41DE2361100202B3C /* Sources */,
132 | 868437A51DE2361100202B3C /* Frameworks */,
133 | 868437A61DE2361100202B3C /* Resources */,
134 | 868437C01DE2363800202B3C /* Embed Frameworks */,
135 | );
136 | buildRules = (
137 | );
138 | dependencies = (
139 | );
140 | name = Onboarding;
141 | productName = Onboarding;
142 | productReference = 868437A81DE2361100202B3C /* Onboarding.app */;
143 | productType = "com.apple.product-type.application";
144 | };
145 | /* End PBXNativeTarget section */
146 |
147 | /* Begin PBXProject section */
148 | 868437A01DE2361100202B3C /* Project object */ = {
149 | isa = PBXProject;
150 | attributes = {
151 | LastSwiftUpdateCheck = 0810;
152 | LastUpgradeCheck = 0810;
153 | ORGANIZATIONNAME = Training;
154 | TargetAttributes = {
155 | 868437A71DE2361100202B3C = {
156 | CreatedOnToolsVersion = 8.1;
157 | ProvisioningStyle = Automatic;
158 | };
159 | };
160 | };
161 | buildConfigurationList = 868437A31DE2361100202B3C /* Build configuration list for PBXProject "Onboarding" */;
162 | compatibilityVersion = "Xcode 3.2";
163 | developmentRegion = English;
164 | hasScannedForEncodings = 0;
165 | knownRegions = (
166 | en,
167 | Base,
168 | );
169 | mainGroup = 8684379F1DE2361100202B3C;
170 | productRefGroup = 868437A91DE2361100202B3C /* Products */;
171 | projectDirPath = "";
172 | projectRoot = "";
173 | targets = (
174 | 868437A71DE2361100202B3C /* Onboarding */,
175 | );
176 | };
177 | /* End PBXProject section */
178 |
179 | /* Begin PBXResourcesBuildPhase section */
180 | 868437A61DE2361100202B3C /* Resources */ = {
181 | isa = PBXResourcesBuildPhase;
182 | buildActionMask = 2147483647;
183 | files = (
184 | 868437D41DE246F400202B3C /* rocket@2x.png in Resources */,
185 | 868437D01DE246F400202B3C /* notification.png in Resources */,
186 | 868437D31DE246F400202B3C /* rocket.png in Resources */,
187 | 868437CF1DE246F400202B3C /* brush@3x.png in Resources */,
188 | 868437CD1DE246F400202B3C /* brush.png in Resources */,
189 | 868437B61DE2361100202B3C /* LaunchScreen.storyboard in Resources */,
190 | 868437B31DE2361100202B3C /* Assets.xcassets in Resources */,
191 | 868437B11DE2361100202B3C /* Main.storyboard in Resources */,
192 | 868437CE1DE246F400202B3C /* brush@2x.png in Resources */,
193 | 868437D11DE246F400202B3C /* notification@2x.png in Resources */,
194 | 868437D21DE246F400202B3C /* notification@3x.png in Resources */,
195 | 868437D51DE246F400202B3C /* rocket@3x.png in Resources */,
196 | );
197 | runOnlyForDeploymentPostprocessing = 0;
198 | };
199 | /* End PBXResourcesBuildPhase section */
200 |
201 | /* Begin PBXSourcesBuildPhase section */
202 | 868437A41DE2361100202B3C /* Sources */ = {
203 | isa = PBXSourcesBuildPhase;
204 | buildActionMask = 2147483647;
205 | files = (
206 | 868437C21DE2382700202B3C /* OnboardingView.swift in Sources */,
207 | 868437AE1DE2361100202B3C /* ViewController.swift in Sources */,
208 | 868437AC1DE2361100202B3C /* AppDelegate.swift in Sources */,
209 | );
210 | runOnlyForDeploymentPostprocessing = 0;
211 | };
212 | /* End PBXSourcesBuildPhase section */
213 |
214 | /* Begin PBXVariantGroup section */
215 | 868437AF1DE2361100202B3C /* Main.storyboard */ = {
216 | isa = PBXVariantGroup;
217 | children = (
218 | 868437B01DE2361100202B3C /* Base */,
219 | );
220 | name = Main.storyboard;
221 | sourceTree = "";
222 | };
223 | 868437B41DE2361100202B3C /* LaunchScreen.storyboard */ = {
224 | isa = PBXVariantGroup;
225 | children = (
226 | 868437B51DE2361100202B3C /* Base */,
227 | );
228 | name = LaunchScreen.storyboard;
229 | sourceTree = "";
230 | };
231 | /* End PBXVariantGroup section */
232 |
233 | /* Begin XCBuildConfiguration section */
234 | 868437B81DE2361100202B3C /* Debug */ = {
235 | isa = XCBuildConfiguration;
236 | buildSettings = {
237 | ALWAYS_SEARCH_USER_PATHS = NO;
238 | CLANG_ANALYZER_NONNULL = YES;
239 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
240 | CLANG_CXX_LIBRARY = "libc++";
241 | CLANG_ENABLE_MODULES = YES;
242 | CLANG_ENABLE_OBJC_ARC = YES;
243 | CLANG_WARN_BOOL_CONVERSION = YES;
244 | CLANG_WARN_CONSTANT_CONVERSION = YES;
245 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
246 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
247 | CLANG_WARN_EMPTY_BODY = YES;
248 | CLANG_WARN_ENUM_CONVERSION = YES;
249 | CLANG_WARN_INFINITE_RECURSION = YES;
250 | CLANG_WARN_INT_CONVERSION = YES;
251 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
252 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
253 | CLANG_WARN_UNREACHABLE_CODE = YES;
254 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
255 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
256 | COPY_PHASE_STRIP = NO;
257 | DEBUG_INFORMATION_FORMAT = dwarf;
258 | ENABLE_STRICT_OBJC_MSGSEND = YES;
259 | ENABLE_TESTABILITY = YES;
260 | GCC_C_LANGUAGE_STANDARD = gnu99;
261 | GCC_DYNAMIC_NO_PIC = NO;
262 | GCC_NO_COMMON_BLOCKS = YES;
263 | GCC_OPTIMIZATION_LEVEL = 0;
264 | GCC_PREPROCESSOR_DEFINITIONS = (
265 | "DEBUG=1",
266 | "$(inherited)",
267 | );
268 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
269 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
270 | GCC_WARN_UNDECLARED_SELECTOR = YES;
271 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
272 | GCC_WARN_UNUSED_FUNCTION = YES;
273 | GCC_WARN_UNUSED_VARIABLE = YES;
274 | IPHONEOS_DEPLOYMENT_TARGET = 10.1;
275 | MTL_ENABLE_DEBUG_INFO = YES;
276 | ONLY_ACTIVE_ARCH = YES;
277 | SDKROOT = iphoneos;
278 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
279 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
280 | };
281 | name = Debug;
282 | };
283 | 868437B91DE2361100202B3C /* Release */ = {
284 | isa = XCBuildConfiguration;
285 | buildSettings = {
286 | ALWAYS_SEARCH_USER_PATHS = NO;
287 | CLANG_ANALYZER_NONNULL = YES;
288 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
289 | CLANG_CXX_LIBRARY = "libc++";
290 | CLANG_ENABLE_MODULES = YES;
291 | CLANG_ENABLE_OBJC_ARC = YES;
292 | CLANG_WARN_BOOL_CONVERSION = YES;
293 | CLANG_WARN_CONSTANT_CONVERSION = YES;
294 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
295 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
296 | CLANG_WARN_EMPTY_BODY = YES;
297 | CLANG_WARN_ENUM_CONVERSION = YES;
298 | CLANG_WARN_INFINITE_RECURSION = YES;
299 | CLANG_WARN_INT_CONVERSION = YES;
300 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
301 | CLANG_WARN_SUSPICIOUS_MOVES = 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_NS_ASSERTIONS = NO;
308 | ENABLE_STRICT_OBJC_MSGSEND = YES;
309 | GCC_C_LANGUAGE_STANDARD = gnu99;
310 | GCC_NO_COMMON_BLOCKS = YES;
311 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
312 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
313 | GCC_WARN_UNDECLARED_SELECTOR = YES;
314 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
315 | GCC_WARN_UNUSED_FUNCTION = YES;
316 | GCC_WARN_UNUSED_VARIABLE = YES;
317 | IPHONEOS_DEPLOYMENT_TARGET = 10.1;
318 | MTL_ENABLE_DEBUG_INFO = NO;
319 | SDKROOT = iphoneos;
320 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
321 | VALIDATE_PRODUCT = YES;
322 | };
323 | name = Release;
324 | };
325 | 868437BB1DE2361100202B3C /* Debug */ = {
326 | isa = XCBuildConfiguration;
327 | buildSettings = {
328 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
329 | FRAMEWORK_SEARCH_PATHS = (
330 | "$(inherited)",
331 | "$(PROJECT_DIR)/Carthage/Build/iOS",
332 | );
333 | INFOPLIST_FILE = Onboarding/Info.plist;
334 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
335 | PRODUCT_BUNDLE_IDENTIFIER = com.brianAdvent.Onboarding;
336 | PRODUCT_NAME = "$(TARGET_NAME)";
337 | SWIFT_VERSION = 3.0;
338 | };
339 | name = Debug;
340 | };
341 | 868437BC1DE2361100202B3C /* Release */ = {
342 | isa = XCBuildConfiguration;
343 | buildSettings = {
344 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
345 | FRAMEWORK_SEARCH_PATHS = (
346 | "$(inherited)",
347 | "$(PROJECT_DIR)/Carthage/Build/iOS",
348 | );
349 | INFOPLIST_FILE = Onboarding/Info.plist;
350 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
351 | PRODUCT_BUNDLE_IDENTIFIER = com.brianAdvent.Onboarding;
352 | PRODUCT_NAME = "$(TARGET_NAME)";
353 | SWIFT_VERSION = 3.0;
354 | };
355 | name = Release;
356 | };
357 | /* End XCBuildConfiguration section */
358 |
359 | /* Begin XCConfigurationList section */
360 | 868437A31DE2361100202B3C /* Build configuration list for PBXProject "Onboarding" */ = {
361 | isa = XCConfigurationList;
362 | buildConfigurations = (
363 | 868437B81DE2361100202B3C /* Debug */,
364 | 868437B91DE2361100202B3C /* Release */,
365 | );
366 | defaultConfigurationIsVisible = 0;
367 | defaultConfigurationName = Release;
368 | };
369 | 868437BA1DE2361100202B3C /* Build configuration list for PBXNativeTarget "Onboarding" */ = {
370 | isa = XCConfigurationList;
371 | buildConfigurations = (
372 | 868437BB1DE2361100202B3C /* Debug */,
373 | 868437BC1DE2361100202B3C /* Release */,
374 | );
375 | defaultConfigurationIsVisible = 0;
376 | };
377 | /* End XCConfigurationList section */
378 | };
379 | rootObject = 868437A01DE2361100202B3C /* Project object */;
380 | }
381 |
--------------------------------------------------------------------------------