├── 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 | --------------------------------------------------------------------------------