实例介绍
A book on creating delightful iOS animations in Swift! From beginning to advanced topics like layer animations, view controller transitions, and more. Currently updated to: Platform: iOS13; Language: Swift5.1; Editor: Xcode11
【实例截图】
【核心代码】
iOS_Animations_by_Tutorials_v6.0.0
├── 01-introduction-to-animations-in-swiftui
│ ├── challenges
│ │ ├── Credits.md
│ │ ├── SavannaTours
│ │ │ ├── Assets
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets
│ │ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── hero.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── rodion-kutsaev-951-unsplash.jpg
│ │ │ │ │ └── thumb.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── joel-herzog-105060-unsplash.jpg
│ │ │ │ ├── Delay.swift
│ │ │ │ ├── Launch Screen.storyboard
│ │ │ │ └── SceneDelegate.swift
│ │ │ ├── Info.plist
│ │ │ └── Views
│ │ │ ├── HeroImage.swift
│ │ │ ├── MilestonesList.swift
│ │ │ └── TourTitle.swift
│ │ ├── SavannaTours.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── Views
│ │ ├── ContentView.swift
│ │ └── StarterView.swift
│ ├── completed
│ │ ├── Credits.md
│ │ ├── SavannaTours
│ │ │ ├── Assets
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets
│ │ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── hero.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── rodion-kutsaev-951-unsplash.jpg
│ │ │ │ │ └── thumb.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── joel-herzog-105060-unsplash.jpg
│ │ │ │ ├── Delay.swift
│ │ │ │ ├── Launch Screen.storyboard
│ │ │ │ └── SceneDelegate.swift
│ │ │ ├── Info.plist
│ │ │ └── Views
│ │ │ ├── HeroImage.swift
│ │ │ ├── MilestonesList.swift
│ │ │ └── TourTitle.swift
│ │ ├── SavannaTours.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── Views
│ │ ├── ContentView.swift
│ │ └── StarterView.swift
│ └── starter
│ ├── Credits.md
│ ├── SavannaTours
│ │ ├── Assets
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── hero.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── rodion-kutsaev-951-unsplash.jpg
│ │ │ │ └── thumb.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── joel-herzog-105060-unsplash.jpg
│ │ │ ├── Delay.swift
│ │ │ ├── Launch Screen.storyboard
│ │ │ └── SceneDelegate.swift
│ │ ├── Info.plist
│ │ └── Views
│ │ ├── HeroImage.swift
│ │ ├── MilestonesList.swift
│ │ └── TourTitle.swift
│ ├── SavannaTours.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── Views
│ ├── ContentView.swift
│ └── StarterView.swift
├── 02-intermediate-swiftui-animations
│ ├── completed
│ │ ├── Spinner
│ │ │ ├── Assets
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets
│ │ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Base.lproj
│ │ │ │ │ └── LaunchScreen.storyboard
│ │ │ │ ├── Delay.swift
│ │ │ │ ├── Info.plist
│ │ │ │ └── SceneDelegate.swift
│ │ │ └── SpinnerView.swift
│ │ └── Spinner.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── Spinner
│ │ ├── Assets
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ └── Contents.json
│ │ │ │ └── Contents.json
│ │ │ ├── Base.lproj
│ │ │ │ └── LaunchScreen.storyboard
│ │ │ ├── Delay.swift
│ │ │ ├── Info.plist
│ │ │ └── SceneDelegate.swift
│ │ └── SpinnerView.swift
│ └── Spinner.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 03-getting-started-with-view-animations
│ ├── challenge
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ ├── final
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ ├── projects
│ │ ├── challenge
│ │ │ ├── BahamaAirLoginScreen
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Base.lproj
│ │ │ │ │ ├── LaunchScreen.xib
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── Images.xcassets
│ │ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ │ ├── balloon.imageset
│ │ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── banner.imageset
│ │ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── bg-sunny.imageset
│ │ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Info.plist
│ │ │ │ └── ViewController.swift
│ │ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── project.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── License.txt
│ │ ├── final
│ │ │ ├── BahamaAirLoginScreen
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Base.lproj
│ │ │ │ │ ├── LaunchScreen.xib
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── Images.xcassets
│ │ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ │ ├── balloon.imageset
│ │ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── banner.imageset
│ │ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ └── bg-sunny.imageset
│ │ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Info.plist
│ │ │ │ └── ViewController.swift
│ │ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── project.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── License.txt
│ │ └── starter
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ └── starter
│ ├── BahamaAirLoginScreen
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── balloon-1024.jpg
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── balloon.imageset
│ │ │ │ ├── balloon@2x.png
│ │ │ │ ├── balloon@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── banner.imageset
│ │ │ │ ├── banner@2x.png
│ │ │ │ ├── banner@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ └── Contents.json
│ │ │ └── bg-sunny.imageset
│ │ │ ├── bg-sunny@2x.png
│ │ │ ├── bg-sunny@3x.png
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ ├── BahamaAirLoginScreen.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── BahamaAirLoginScreen.xccheckout
│ │ └── IDEWorkspaceChecks.plist
│ └── License.txt
├── 04-springs
│ ├── challenge
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ ├── final
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ └── starter
│ ├── BahamaAirLoginScreen
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── balloon-1024.jpg
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── balloon.imageset
│ │ │ │ ├── balloon@2x.png
│ │ │ │ ├── balloon@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── banner.imageset
│ │ │ │ ├── banner@2x.png
│ │ │ │ ├── banner@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ └── Contents.json
│ │ │ └── bg-sunny.imageset
│ │ │ ├── bg-sunny@2x.png
│ │ │ ├── bg-sunny@3x.png
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ ├── BahamaAirLoginScreen.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── BahamaAirLoginScreen.xccheckout
│ │ └── IDEWorkspaceChecks.plist
│ └── License.txt
├── 05-transitions
│ ├── challenge
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ ├── final
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ └── starter
│ ├── BahamaAirLoginScreen
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── balloon-1024.jpg
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── balloon.imageset
│ │ │ │ ├── balloon@2x.png
│ │ │ │ ├── balloon@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── banner.imageset
│ │ │ │ ├── banner@2x.png
│ │ │ │ ├── banner@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ └── Contents.json
│ │ │ └── bg-sunny.imageset
│ │ │ ├── bg-sunny@2x.png
│ │ │ ├── bg-sunny@3x.png
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ ├── BahamaAirLoginScreen.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── BahamaAirLoginScreen.xccheckout
│ │ └── IDEWorkspaceChecks.plist
│ └── License.txt
├── 06-view-animations-in-practice
│ ├── challenge
│ │ ├── Flight Info
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── FlightData.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-snowy.imageset
│ │ │ │ │ ├── bg-snowy@2x.png
│ │ │ │ │ ├── bg-snowy@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny.imageset
│ │ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── flake.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── snowflake1.png
│ │ │ │ ├── icon-blue-arrow.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── icon-blue-arrow@2x.png
│ │ │ │ │ └── icon-blue-arrow@3x.png
│ │ │ │ └── plane.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── plane@2x.png
│ │ │ │ └── plane@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── SnowView.swift
│ │ │ └── ViewController.swift
│ │ ├── Flight Info.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ ├── final
│ │ ├── Flight Info
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── FlightData.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-snowy.imageset
│ │ │ │ │ ├── bg-snowy@2x.png
│ │ │ │ │ ├── bg-snowy@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny.imageset
│ │ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── flake.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── snowflake1.png
│ │ │ │ ├── icon-blue-arrow.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── icon-blue-arrow@2x.png
│ │ │ │ │ └── icon-blue-arrow@3x.png
│ │ │ │ └── plane.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── plane@2x.png
│ │ │ │ └── plane@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── SnowView.swift
│ │ │ └── ViewController.swift
│ │ ├── Flight Info.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ └── starter
│ ├── Flight Info
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── FlightData.swift
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── balloon-1024.jpg
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── balloon.imageset
│ │ │ │ ├── balloon@2x.png
│ │ │ │ ├── balloon@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── banner.imageset
│ │ │ │ ├── banner@2x.png
│ │ │ │ ├── banner@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-snowy.imageset
│ │ │ │ ├── bg-snowy@2x.png
│ │ │ │ ├── bg-snowy@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── flake.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── snowflake1.png
│ │ │ ├── icon-blue-arrow.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon-blue-arrow@2x.png
│ │ │ │ └── icon-blue-arrow@3x.png
│ │ │ └── plane.imageset
│ │ │ ├── Contents.json
│ │ │ ├── plane@2x.png
│ │ │ └── plane@3x.png
│ │ ├── Info.plist
│ │ ├── SnowView.swift
│ │ └── ViewController.swift
│ ├── Flight Info.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── License.txt
├── 07-keyframe-animations
│ ├── challenge
│ │ ├── Flight Info
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── FlightData.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-snowy.imageset
│ │ │ │ │ ├── bg-snowy@2x.png
│ │ │ │ │ ├── bg-snowy@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny.imageset
│ │ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── flake.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── snowflake1.png
│ │ │ │ ├── icon-blue-arrow.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── icon-blue-arrow@2x.png
│ │ │ │ │ └── icon-blue-arrow@3x.png
│ │ │ │ └── plane.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── plane@2x.png
│ │ │ │ └── plane@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── SnowView.swift
│ │ │ └── ViewController.swift
│ │ ├── Flight Info.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ ├── final
│ │ ├── Flight Info
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── FlightData.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-snowy.imageset
│ │ │ │ │ ├── bg-snowy@2x.png
│ │ │ │ │ ├── bg-snowy@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny.imageset
│ │ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── flake.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── snowflake1.png
│ │ │ │ ├── icon-blue-arrow.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── icon-blue-arrow@2x.png
│ │ │ │ │ └── icon-blue-arrow@3x.png
│ │ │ │ └── plane.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── plane@2x.png
│ │ │ │ └── plane@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── SnowView.swift
│ │ │ └── ViewController.swift
│ │ ├── Flight Info.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ └── starter
│ ├── Flight Info
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── FlightData.swift
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── balloon-1024.jpg
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── balloon.imageset
│ │ │ │ ├── balloon@2x.png
│ │ │ │ ├── balloon@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── banner.imageset
│ │ │ │ ├── banner@2x.png
│ │ │ │ ├── banner@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-snowy.imageset
│ │ │ │ ├── bg-snowy@2x.png
│ │ │ │ ├── bg-snowy@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── flake.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── snowflake1.png
│ │ │ ├── icon-blue-arrow.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon-blue-arrow@2x.png
│ │ │ │ └── icon-blue-arrow@3x.png
│ │ │ └── plane.imageset
│ │ │ ├── Contents.json
│ │ │ ├── plane@2x.png
│ │ │ └── plane@3x.png
│ │ ├── Info.plist
│ │ ├── SnowView.swift
│ │ └── ViewController.swift
│ ├── Flight Info.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── License.txt
├── 08-introduction-to-auto-layout
│ ├── final
│ │ ├── License.txt
│ │ ├── PackingList
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── HorizontalItemList.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── summericons_100px_00.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ │ └── summericons_100px_00@3x.png
│ │ │ │ ├── summericons_100px_01.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ │ └── summericons_100px_01@3x.png
│ │ │ │ ├── summericons_100px_02.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ │ └── summericons_100px_02@3x.png
│ │ │ │ ├── summericons_100px_03.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ │ └── summericons_100px_03@3x.png
│ │ │ │ ├── summericons_100px_04.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ │ └── summericons_100px_04@3x.png
│ │ │ │ ├── summericons_100px_05.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ │ └── summericons_100px_05@3x.png
│ │ │ │ ├── summericons_100px_06.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ │ └── summericons_100px_06@3x.png
│ │ │ │ ├── summericons_100px_07.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ │ └── summericons_100px_07@3x.png
│ │ │ │ ├── summericons_100px_08.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ │ └── summericons_100px_08@3x.png
│ │ │ │ └── summericons_100px_09.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_09@2x.png
│ │ │ │ └── summericons_100px_09@3x.png
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ └── PackingList.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── License.txt
│ ├── PackingList
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── HorizontalItemList.swift
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── summericons_100px_00.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ └── summericons_100px_00@3x.png
│ │ │ ├── summericons_100px_01.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ └── summericons_100px_01@3x.png
│ │ │ ├── summericons_100px_02.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ └── summericons_100px_02@3x.png
│ │ │ ├── summericons_100px_03.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ └── summericons_100px_03@3x.png
│ │ │ ├── summericons_100px_04.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ └── summericons_100px_04@3x.png
│ │ │ ├── summericons_100px_05.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ └── summericons_100px_05@3x.png
│ │ │ ├── summericons_100px_06.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ └── summericons_100px_06@3x.png
│ │ │ ├── summericons_100px_07.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ └── summericons_100px_07@3x.png
│ │ │ ├── summericons_100px_08.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ └── summericons_100px_08@3x.png
│ │ │ └── summericons_100px_09.imageset
│ │ │ ├── Contents.json
│ │ │ ├── summericons_100px_09@2x.png
│ │ │ └── summericons_100px_09@3x.png
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ └── PackingList.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 09-animating-constraints
│ ├── challenge
│ │ ├── License.txt
│ │ ├── PackingList
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── HorizontalItemList.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── summericons_100px_00.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ │ └── summericons_100px_00@3x.png
│ │ │ │ ├── summericons_100px_01.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ │ └── summericons_100px_01@3x.png
│ │ │ │ ├── summericons_100px_02.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ │ └── summericons_100px_02@3x.png
│ │ │ │ ├── summericons_100px_03.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ │ └── summericons_100px_03@3x.png
│ │ │ │ ├── summericons_100px_04.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ │ └── summericons_100px_04@3x.png
│ │ │ │ ├── summericons_100px_05.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ │ └── summericons_100px_05@3x.png
│ │ │ │ ├── summericons_100px_06.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ │ └── summericons_100px_06@3x.png
│ │ │ │ ├── summericons_100px_07.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ │ └── summericons_100px_07@3x.png
│ │ │ │ ├── summericons_100px_08.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ │ └── summericons_100px_08@3x.png
│ │ │ │ └── summericons_100px_09.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_09@2x.png
│ │ │ │ └── summericons_100px_09@3x.png
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ └── PackingList.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── final
│ │ ├── License.txt
│ │ ├── PackingList
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── HorizontalItemList.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── summericons_100px_00.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ │ └── summericons_100px_00@3x.png
│ │ │ │ ├── summericons_100px_01.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ │ └── summericons_100px_01@3x.png
│ │ │ │ ├── summericons_100px_02.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ │ └── summericons_100px_02@3x.png
│ │ │ │ ├── summericons_100px_03.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ │ └── summericons_100px_03@3x.png
│ │ │ │ ├── summericons_100px_04.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ │ └── summericons_100px_04@3x.png
│ │ │ │ ├── summericons_100px_05.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ │ └── summericons_100px_05@3x.png
│ │ │ │ ├── summericons_100px_06.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ │ └── summericons_100px_06@3x.png
│ │ │ │ ├── summericons_100px_07.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ │ └── summericons_100px_07@3x.png
│ │ │ │ ├── summericons_100px_08.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ │ └── summericons_100px_08@3x.png
│ │ │ │ └── summericons_100px_09.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_09@2x.png
│ │ │ │ └── summericons_100px_09@3x.png
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ └── PackingList.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── License.txt
│ ├── PackingList
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── HorizontalItemList.swift
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── summericons_100px_00.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ └── summericons_100px_00@3x.png
│ │ │ ├── summericons_100px_01.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ └── summericons_100px_01@3x.png
│ │ │ ├── summericons_100px_02.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ └── summericons_100px_02@3x.png
│ │ │ ├── summericons_100px_03.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ └── summericons_100px_03@3x.png
│ │ │ ├── summericons_100px_04.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ └── summericons_100px_04@3x.png
│ │ │ ├── summericons_100px_05.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ └── summericons_100px_05@3x.png
│ │ │ ├── summericons_100px_06.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ └── summericons_100px_06@3x.png
│ │ │ ├── summericons_100px_07.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ └── summericons_100px_07@3x.png
│ │ │ ├── summericons_100px_08.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ └── summericons_100px_08@3x.png
│ │ │ └── summericons_100px_09.imageset
│ │ │ ├── Contents.json
│ │ │ ├── summericons_100px_09@2x.png
│ │ │ └── summericons_100px_09@3x.png
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ └── PackingList.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 10-getting-started-with-layer-animations
│ ├── challenge
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ ├── final
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ └── starter
│ ├── BahamaAirLoginScreen
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── balloon-1024.jpg
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── balloon.imageset
│ │ │ │ ├── balloon@2x.png
│ │ │ │ ├── balloon@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── banner.imageset
│ │ │ │ ├── banner@2x.png
│ │ │ │ ├── banner@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ └── Contents.json
│ │ │ └── bg-sunny.imageset
│ │ │ ├── bg-sunny@2x.png
│ │ │ ├── bg-sunny@3x.png
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ ├── BahamaAirLoginScreen.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── BahamaAirLoginScreen.xccheckout
│ │ └── IDEWorkspaceChecks.plist
│ └── License.txt
├── 11-animation-keys-and-delegates
│ ├── challenge
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ ├── final
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ └── starter
│ ├── BahamaAirLoginScreen
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── balloon-1024.jpg
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── balloon.imageset
│ │ │ │ ├── balloon@2x.png
│ │ │ │ ├── balloon@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── banner.imageset
│ │ │ │ ├── banner@2x.png
│ │ │ │ ├── banner@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ └── Contents.json
│ │ │ └── bg-sunny.imageset
│ │ │ ├── bg-sunny@2x.png
│ │ │ ├── bg-sunny@3x.png
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ ├── BahamaAirLoginScreen.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── BahamaAirLoginScreen.xccheckout
│ │ └── IDEWorkspaceChecks.plist
│ └── License.txt
├── 12-groups-and-advanced-timing
│ ├── challenge
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ ├── final
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ └── starter
│ ├── BahamaAirLoginScreen
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── balloon-1024.jpg
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── balloon.imageset
│ │ │ │ ├── balloon@2x.png
│ │ │ │ ├── balloon@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── banner.imageset
│ │ │ │ ├── banner@2x.png
│ │ │ │ ├── banner@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ └── Contents.json
│ │ │ └── bg-sunny.imageset
│ │ │ ├── bg-sunny@2x.png
│ │ │ ├── bg-sunny@3x.png
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ ├── BahamaAirLoginScreen.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── BahamaAirLoginScreen.xccheckout
│ │ └── IDEWorkspaceChecks.plist
│ └── License.txt
├── 13-layer-springs
│ ├── challenge
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ ├── final
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ └── starter
│ ├── BahamaAirLoginScreen
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── balloon-1024.jpg
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── balloon.imageset
│ │ │ │ ├── balloon@2x.png
│ │ │ │ ├── balloon@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── banner.imageset
│ │ │ │ ├── banner@2x.png
│ │ │ │ ├── banner@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ └── Contents.json
│ │ │ └── bg-sunny.imageset
│ │ │ ├── bg-sunny@2x.png
│ │ │ ├── bg-sunny@3x.png
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ ├── BahamaAirLoginScreen.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── BahamaAirLoginScreen.xccheckout
│ │ └── IDEWorkspaceChecks.plist
│ └── License.txt
├── 14-keyframe-animations-and-struct-properties
│ ├── final
│ │ ├── BahamaAirLoginScreen
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── balloon-1024.jpg
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── balloon.imageset
│ │ │ │ │ ├── balloon@2x.png
│ │ │ │ │ ├── balloon@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── banner.imageset
│ │ │ │ │ ├── banner@2x.png
│ │ │ │ │ ├── banner@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── bg-sunny.imageset
│ │ │ │ ├── bg-sunny@2x.png
│ │ │ │ ├── bg-sunny@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BahamaAirLoginScreen.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ ├── BahamaAirLoginScreen.xccheckout
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ └── starter
│ ├── BahamaAirLoginScreen
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── balloon-1024.jpg
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── balloon.imageset
│ │ │ │ ├── balloon@2x.png
│ │ │ │ ├── balloon@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── banner.imageset
│ │ │ │ ├── banner@2x.png
│ │ │ │ ├── banner@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-1.imageset
│ │ │ │ ├── bg-sunny-cloud-1@2x.png
│ │ │ │ ├── bg-sunny-cloud-1@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-2.imageset
│ │ │ │ ├── bg-sunny-cloud-2@2x.png
│ │ │ │ ├── bg-sunny-cloud-2@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-3.imageset
│ │ │ │ ├── bg-sunny-cloud-3@2x.png
│ │ │ │ ├── bg-sunny-cloud-3@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-sunny-cloud-4.imageset
│ │ │ │ ├── bg-sunny-cloud-4@2x.png
│ │ │ │ ├── bg-sunny-cloud-4@3x.png
│ │ │ │ └── Contents.json
│ │ │ └── bg-sunny.imageset
│ │ │ ├── bg-sunny@2x.png
│ │ │ ├── bg-sunny@3x.png
│ │ │ └── Contents.json
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ ├── BahamaAirLoginScreen.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── BahamaAirLoginScreen.xccheckout
│ │ └── IDEWorkspaceChecks.plist
│ └── License.txt
├── 15-shapes-and-masks
│ ├── challenge
│ │ ├── Arial Rounded Bold.ttf
│ │ ├── License.txt
│ │ ├── MultiplayerSearch
│ │ │ ├── AppDelegate.swift
│ │ │ ├── AvatarView.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-76@2x.png
│ │ │ │ │ ├── Icon-76.png
│ │ │ │ │ ├── Icon-Small@2x-1.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Small.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x-1.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ │ └── Icon-Spotlight-40.png
│ │ │ │ ├── avatar-1.imageset
│ │ │ │ │ ├── avatar-1@2x.png
│ │ │ │ │ ├── avatar-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── avatar-2.imageset
│ │ │ │ │ ├── avatar-2@2x.png
│ │ │ │ │ ├── avatar-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-boxingring.imageset
│ │ │ │ │ ├── bg-boxingring@2x.png
│ │ │ │ │ ├── bg-boxingring@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── empty.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── empty@2x.png
│ │ │ │ └── empty@3x.png
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ └── MultiplayerSearch.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── final
│ │ ├── Arial Rounded Bold.ttf
│ │ ├── License.txt
│ │ ├── MultiplayerSearch
│ │ │ ├── AppDelegate.swift
│ │ │ ├── AvatarView.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-76@2x.png
│ │ │ │ │ ├── Icon-76.png
│ │ │ │ │ ├── Icon-Small@2x-1.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Small.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x-1.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ │ └── Icon-Spotlight-40.png
│ │ │ │ ├── avatar-1.imageset
│ │ │ │ │ ├── avatar-1@2x.png
│ │ │ │ │ ├── avatar-1@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── avatar-2.imageset
│ │ │ │ │ ├── avatar-2@2x.png
│ │ │ │ │ ├── avatar-2@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg-boxingring.imageset
│ │ │ │ │ ├── bg-boxingring@2x.png
│ │ │ │ │ ├── bg-boxingring@3x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── empty.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── empty@2x.png
│ │ │ │ └── empty@3x.png
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ └── MultiplayerSearch.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── Arial Rounded Bold.ttf
│ ├── License.txt
│ ├── MultiplayerSearch
│ │ ├── AppDelegate.swift
│ │ ├── AvatarView.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-76@2x.png
│ │ │ │ ├── Icon-76.png
│ │ │ │ ├── Icon-Small@2x-1.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Small.png
│ │ │ │ ├── Icon-Spotlight-40@2x-1.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ └── Icon-Spotlight-40.png
│ │ │ ├── avatar-1.imageset
│ │ │ │ ├── avatar-1@2x.png
│ │ │ │ ├── avatar-1@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── avatar-2.imageset
│ │ │ │ ├── avatar-2@2x.png
│ │ │ │ ├── avatar-2@3x.png
│ │ │ │ └── Contents.json
│ │ │ ├── bg-boxingring.imageset
│ │ │ │ ├── bg-boxingring@2x.png
│ │ │ │ ├── bg-boxingring@3x.png
│ │ │ │ └── Contents.json
│ │ │ └── empty.imageset
│ │ │ ├── Contents.json
│ │ │ ├── empty@2x.png
│ │ │ └── empty@3x.png
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ └── MultiplayerSearch.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 16-gradient-animations
│ ├── challenge
│ │ ├── License.txt
│ │ ├── SlideToReveal
│ │ │ ├── AnimatedMaskLabel.swift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ └── meme.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── meme@2x.png
│ │ │ │ └── meme@3x.png
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ └── SlideToReveal.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── final
│ │ ├── License.txt
│ │ ├── SlideToReveal
│ │ │ ├── AnimatedMaskLabel.swift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ └── meme.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── meme@2x.png
│ │ │ │ └── meme@3x.png
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ └── SlideToReveal.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── License.txt
│ ├── SlideToReveal
│ │ ├── AnimatedMaskLabel.swift
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ └── meme.imageset
│ │ │ ├── Contents.json
│ │ │ ├── meme@2x.png
│ │ │ └── meme@3x.png
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ └── SlideToReveal.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 17-stroke-and-path-animations
│ ├── final
│ │ ├── License.txt
│ │ ├── PullToRefresh
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── airplane.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── icon-plane@2x.png
│ │ │ │ │ └── icon-plane@3x.png
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── Contents.json
│ │ │ │ ├── refresh-view-bg.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── refresh-view-bg@2x.png
│ │ │ │ │ └── refresh-view-bg@3x.png
│ │ │ │ ├── summericons_100px_0.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ │ └── summericons_100px_00@3x.png
│ │ │ │ ├── summericons_100px_10.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_10@2x.png
│ │ │ │ │ └── summericons_100px_10@3x.png
│ │ │ │ ├── summericons_100px_1.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ │ └── summericons_100px_01@3x.png
│ │ │ │ ├── summericons_100px_2.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ │ └── summericons_100px_02@3x.png
│ │ │ │ ├── summericons_100px_3.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ │ └── summericons_100px_03@3x.png
│ │ │ │ ├── summericons_100px_4.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ │ └── summericons_100px_04@3x.png
│ │ │ │ ├── summericons_100px_5.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ │ └── summericons_100px_05@3x.png
│ │ │ │ ├── summericons_100px_6.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ │ └── summericons_100px_06@3x.png
│ │ │ │ ├── summericons_100px_7.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ │ └── summericons_100px_07@3x.png
│ │ │ │ ├── summericons_100px_8.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ │ └── summericons_100px_08@3x.png
│ │ │ │ └── summericons_100px_9.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_09@2x.png
│ │ │ │ └── summericons_100px_09@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── RefreshView.swift
│ │ │ └── ViewController.swift
│ │ └── PullToRefresh.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── License.txt
│ ├── PullToRefresh
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── airplane.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon-plane@2x.png
│ │ │ │ └── icon-plane@3x.png
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── Contents.json
│ │ │ ├── refresh-view-bg.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── refresh-view-bg@2x.png
│ │ │ │ └── refresh-view-bg@3x.png
│ │ │ ├── summericons_100px_0.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ └── summericons_100px_00@3x.png
│ │ │ ├── summericons_100px_10.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_10@2x.png
│ │ │ │ └── summericons_100px_10@3x.png
│ │ │ ├── summericons_100px_1.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ └── summericons_100px_01@3x.png
│ │ │ ├── summericons_100px_2.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ └── summericons_100px_02@3x.png
│ │ │ ├── summericons_100px_3.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ └── summericons_100px_03@3x.png
│ │ │ ├── summericons_100px_4.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ └── summericons_100px_04@3x.png
│ │ │ ├── summericons_100px_5.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ └── summericons_100px_05@3x.png
│ │ │ ├── summericons_100px_6.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ └── summericons_100px_06@3x.png
│ │ │ ├── summericons_100px_7.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ └── summericons_100px_07@3x.png
│ │ │ ├── summericons_100px_8.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ └── summericons_100px_08@3x.png
│ │ │ └── summericons_100px_9.imageset
│ │ │ ├── Contents.json
│ │ │ ├── summericons_100px_09@2x.png
│ │ │ └── summericons_100px_09@3x.png
│ │ ├── Info.plist
│ │ ├── RefreshView.swift
│ │ └── ViewController.swift
│ └── PullToRefresh.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 18-replicating-animations
│ ├── challenge
│ │ ├── Iris
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assistant.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ └── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── MicMonitor.swift
│ │ │ └── ViewController.swift
│ │ └── Iris.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── final
│ │ ├── Iris
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assistant.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ └── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── MicMonitor.swift
│ │ │ └── ViewController.swift
│ │ └── Iris.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── Iris
│ │ ├── AppDelegate.swift
│ │ ├── Assistant.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon-1024.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ ├── Icon-Small@3x.png
│ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ └── Icon-Spotlight-40@3x.png
│ │ ├── Info.plist
│ │ ├── MicMonitor.swift
│ │ └── ViewController.swift
│ └── Iris.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 19-custom-presentation-controller-and-device-orientation-animations
│ ├── challenge
│ │ ├── BeginnerCook
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── HerbDetailsViewController.swift
│ │ │ ├── HerbModel.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── anise.imageset
│ │ │ │ │ ├── anise.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── basil.imageset
│ │ │ │ │ ├── basil.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg.imageset
│ │ │ │ │ ├── bg@2x.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── marjorana.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── marjorana.jpg
│ │ │ │ ├── rosemary.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── rosemary.jpg
│ │ │ │ └── saffron.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── saffron.jpg
│ │ │ ├── Info.plist
│ │ │ ├── PopAnimator.swift
│ │ │ └── ViewController.swift
│ │ ├── BeginnerCook.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ ├── Image-Licenses.txt
│ │ └── License.txt
│ ├── final
│ │ ├── BeginnerCook
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── HerbDetailsViewController.swift
│ │ │ ├── HerbModel.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── anise.imageset
│ │ │ │ │ ├── anise.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── basil.imageset
│ │ │ │ │ ├── basil.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg.imageset
│ │ │ │ │ ├── bg@2x.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── marjorana.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── marjorana.jpg
│ │ │ │ ├── rosemary.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── rosemary.jpg
│ │ │ │ └── saffron.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── saffron.jpg
│ │ │ ├── Info.plist
│ │ │ ├── PopAnimator.swift
│ │ │ └── ViewController.swift
│ │ ├── BeginnerCook.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ ├── Image-Licenses.txt
│ │ └── License.txt
│ ├── projects
│ │ ├── challenge
│ │ │ ├── BeginnerCook
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Base.lproj
│ │ │ │ │ ├── LaunchScreen.xib
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── HerbDetailsViewController.swift
│ │ │ │ ├── HerbModel.swift
│ │ │ │ ├── Images.xcassets
│ │ │ │ │ ├── anise.imageset
│ │ │ │ │ │ ├── anise.jpg
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ │ ├── basil.imageset
│ │ │ │ │ │ ├── basil.jpg
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bg.imageset
│ │ │ │ │ │ ├── bg@2x.jpg
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── marjorana.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── marjorana.jpg
│ │ │ │ │ ├── rosemary.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── rosemary.jpg
│ │ │ │ │ └── saffron.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── saffron.jpg
│ │ │ │ ├── Info.plist
│ │ │ │ ├── PopAnimator.swift
│ │ │ │ └── ViewController.swift
│ │ │ ├── BeginnerCook.xcodeproj
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── project.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ ├── Image-Licenses.txt
│ │ │ └── License.txt
│ │ ├── final
│ │ │ ├── BeginnerCook
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Base.lproj
│ │ │ │ │ ├── LaunchScreen.xib
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── HerbDetailsViewController.swift
│ │ │ │ ├── HerbModel.swift
│ │ │ │ ├── Images.xcassets
│ │ │ │ │ ├── anise.imageset
│ │ │ │ │ │ ├── anise.jpg
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ │ ├── basil.imageset
│ │ │ │ │ │ ├── basil.jpg
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── bg.imageset
│ │ │ │ │ │ ├── bg@2x.jpg
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── marjorana.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── marjorana.jpg
│ │ │ │ │ ├── rosemary.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── rosemary.jpg
│ │ │ │ │ └── saffron.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── saffron.jpg
│ │ │ │ ├── Info.plist
│ │ │ │ ├── PopAnimator.swift
│ │ │ │ └── ViewController.swift
│ │ │ ├── BeginnerCook.xcodeproj
│ │ │ │ ├── project.pbxproj
│ │ │ │ └── project.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ ├── Image-Licenses.txt
│ │ │ └── License.txt
│ │ └── starter
│ │ ├── BeginnerCook
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── HerbDetailsViewController.swift
│ │ │ ├── HerbModel.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── anise.imageset
│ │ │ │ │ ├── anise.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── basil.imageset
│ │ │ │ │ ├── basil.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── bg.imageset
│ │ │ │ │ ├── bg@2x.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── marjorana.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── marjorana.jpg
│ │ │ │ ├── rosemary.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── rosemary.jpg
│ │ │ │ └── saffron.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── saffron.jpg
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── BeginnerCook.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ ├── Image-Licenses.txt
│ │ └── License.txt
│ └── starter
│ ├── BeginnerCook
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── HerbDetailsViewController.swift
│ │ ├── HerbModel.swift
│ │ ├── Images.xcassets
│ │ │ ├── anise.imageset
│ │ │ │ ├── anise.jpg
│ │ │ │ └── Contents.json
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── basil.imageset
│ │ │ │ ├── basil.jpg
│ │ │ │ └── Contents.json
│ │ │ ├── bg.imageset
│ │ │ │ ├── bg@2x.jpg
│ │ │ │ └── Contents.json
│ │ │ ├── marjorana.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── marjorana.jpg
│ │ │ ├── rosemary.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── rosemary.jpg
│ │ │ └── saffron.imageset
│ │ │ ├── Contents.json
│ │ │ └── saffron.jpg
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ ├── BeginnerCook.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── Image-Licenses.txt
│ └── License.txt
├── 20-uinavigationcontroller-custom-transition-animations
│ ├── challenge
│ │ ├── License.txt
│ │ ├── LogoReveal
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── DetailViewController.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── summericons_100px_00.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ │ └── summericons_100px_00@3x.png
│ │ │ │ ├── summericons_100px_01.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ │ └── summericons_100px_01@3x.png
│ │ │ │ ├── summericons_100px_02.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ │ └── summericons_100px_02@3x.png
│ │ │ │ ├── summericons_100px_03.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ │ └── summericons_100px_03@3x.png
│ │ │ │ ├── summericons_100px_04.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ │ └── summericons_100px_04@3x.png
│ │ │ │ ├── summericons_100px_05.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ │ └── summericons_100px_05@3x.png
│ │ │ │ ├── summericons_100px_06.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ │ └── summericons_100px_06@3x.png
│ │ │ │ ├── summericons_100px_07.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ │ └── summericons_100px_07@3x.png
│ │ │ │ ├── summericons_100px_08.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ │ └── summericons_100px_08@3x.png
│ │ │ │ └── summericons_100px_09.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_09@2x.png
│ │ │ │ └── summericons_100px_09@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── MasterViewController.swift
│ │ │ ├── RevealAnimator.swift
│ │ │ └── RWLogoLayer.swift
│ │ └── LogoReveal.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── final
│ │ ├── License.txt
│ │ ├── LogoReveal
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── DetailViewController.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── summericons_100px_00.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ │ └── summericons_100px_00@3x.png
│ │ │ │ ├── summericons_100px_01.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ │ └── summericons_100px_01@3x.png
│ │ │ │ ├── summericons_100px_02.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ │ └── summericons_100px_02@3x.png
│ │ │ │ ├── summericons_100px_03.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ │ └── summericons_100px_03@3x.png
│ │ │ │ ├── summericons_100px_04.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ │ └── summericons_100px_04@3x.png
│ │ │ │ ├── summericons_100px_05.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ │ └── summericons_100px_05@3x.png
│ │ │ │ ├── summericons_100px_06.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ │ └── summericons_100px_06@3x.png
│ │ │ │ ├── summericons_100px_07.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ │ └── summericons_100px_07@3x.png
│ │ │ │ ├── summericons_100px_08.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ │ └── summericons_100px_08@3x.png
│ │ │ │ └── summericons_100px_09.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_09@2x.png
│ │ │ │ └── summericons_100px_09@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── MasterViewController.swift
│ │ │ ├── RevealAnimator.swift
│ │ │ └── RWLogoLayer.swift
│ │ └── LogoReveal.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── License.txt
│ ├── LogoReveal
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── DetailViewController.swift
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── summericons_100px_00.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ └── summericons_100px_00@3x.png
│ │ │ ├── summericons_100px_01.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ └── summericons_100px_01@3x.png
│ │ │ ├── summericons_100px_02.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ └── summericons_100px_02@3x.png
│ │ │ ├── summericons_100px_03.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ └── summericons_100px_03@3x.png
│ │ │ ├── summericons_100px_04.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ └── summericons_100px_04@3x.png
│ │ │ ├── summericons_100px_05.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ └── summericons_100px_05@3x.png
│ │ │ ├── summericons_100px_06.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ └── summericons_100px_06@3x.png
│ │ │ ├── summericons_100px_07.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ └── summericons_100px_07@3x.png
│ │ │ ├── summericons_100px_08.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ └── summericons_100px_08@3x.png
│ │ │ └── summericons_100px_09.imageset
│ │ │ ├── Contents.json
│ │ │ ├── summericons_100px_09@2x.png
│ │ │ └── summericons_100px_09@3x.png
│ │ ├── Info.plist
│ │ ├── MasterViewController.swift
│ │ └── RWLogoLayer.swift
│ └── LogoReveal.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 21-interactive-uinavigationcontroller-transitions
│ ├── challenge
│ │ ├── License.txt
│ │ ├── LogoReveal
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── DetailViewController.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── summericons_100px_00.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ │ └── summericons_100px_00@3x.png
│ │ │ │ ├── summericons_100px_01.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ │ └── summericons_100px_01@3x.png
│ │ │ │ ├── summericons_100px_02.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ │ └── summericons_100px_02@3x.png
│ │ │ │ ├── summericons_100px_03.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ │ └── summericons_100px_03@3x.png
│ │ │ │ ├── summericons_100px_04.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ │ └── summericons_100px_04@3x.png
│ │ │ │ ├── summericons_100px_05.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ │ └── summericons_100px_05@3x.png
│ │ │ │ ├── summericons_100px_06.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ │ └── summericons_100px_06@3x.png
│ │ │ │ ├── summericons_100px_07.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ │ └── summericons_100px_07@3x.png
│ │ │ │ ├── summericons_100px_08.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ │ └── summericons_100px_08@3x.png
│ │ │ │ └── summericons_100px_09.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_09@2x.png
│ │ │ │ └── summericons_100px_09@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── MasterViewController.swift
│ │ │ ├── RevealAnimator.swift
│ │ │ └── RWLogoLayer.swift
│ │ └── LogoReveal.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── final
│ │ ├── License.txt
│ │ ├── LogoReveal
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── DetailViewController.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── summericons_100px_00.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ │ └── summericons_100px_00@3x.png
│ │ │ │ ├── summericons_100px_01.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ │ └── summericons_100px_01@3x.png
│ │ │ │ ├── summericons_100px_02.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ │ └── summericons_100px_02@3x.png
│ │ │ │ ├── summericons_100px_03.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ │ └── summericons_100px_03@3x.png
│ │ │ │ ├── summericons_100px_04.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ │ └── summericons_100px_04@3x.png
│ │ │ │ ├── summericons_100px_05.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ │ └── summericons_100px_05@3x.png
│ │ │ │ ├── summericons_100px_06.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ │ └── summericons_100px_06@3x.png
│ │ │ │ ├── summericons_100px_07.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ │ └── summericons_100px_07@3x.png
│ │ │ │ ├── summericons_100px_08.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ │ └── summericons_100px_08@3x.png
│ │ │ │ └── summericons_100px_09.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_09@2x.png
│ │ │ │ └── summericons_100px_09@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── MasterViewController.swift
│ │ │ ├── RevealAnimator.swift
│ │ │ └── RWLogoLayer.swift
│ │ └── LogoReveal.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── License.txt
│ ├── LogoReveal
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── DetailViewController.swift
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── summericons_100px_00.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_00@2x.png
│ │ │ │ └── summericons_100px_00@3x.png
│ │ │ ├── summericons_100px_01.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_01@2x.png
│ │ │ │ └── summericons_100px_01@3x.png
│ │ │ ├── summericons_100px_02.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_02@2x.png
│ │ │ │ └── summericons_100px_02@3x.png
│ │ │ ├── summericons_100px_03.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_03@2x.png
│ │ │ │ └── summericons_100px_03@3x.png
│ │ │ ├── summericons_100px_04.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_04@2x.png
│ │ │ │ └── summericons_100px_04@3x.png
│ │ │ ├── summericons_100px_05.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_05@2x.png
│ │ │ │ └── summericons_100px_05@3x.png
│ │ │ ├── summericons_100px_06.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_06@2x.png
│ │ │ │ └── summericons_100px_06@3x.png
│ │ │ ├── summericons_100px_07.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_07@2x.png
│ │ │ │ └── summericons_100px_07@3x.png
│ │ │ ├── summericons_100px_08.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── summericons_100px_08@2x.png
│ │ │ │ └── summericons_100px_08@3x.png
│ │ │ └── summericons_100px_09.imageset
│ │ │ ├── Contents.json
│ │ │ ├── summericons_100px_09@2x.png
│ │ │ └── summericons_100px_09@3x.png
│ │ ├── Info.plist
│ │ ├── MasterViewController.swift
│ │ ├── RevealAnimator.swift
│ │ └── RWLogoLayer.swift
│ └── LogoReveal.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 22-getting-started-with-uiviewpropertyanimator
│ ├── challenge
│ │ ├── License.txt
│ │ ├── LockSearch
│ │ │ ├── AnimatorFactory.swift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-60.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ │ └── Icon-Spotlight-40.png
│ │ │ │ ├── background.imageset
│ │ │ │ │ ├── background.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon1.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon2.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon3.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon4.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon5.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon6.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon7.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon8.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── img_0322.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── img_0322.jpg
│ │ │ │ ├── iris-icon.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ └── shinkon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── shinkon.png
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── FooterCell.swift
│ │ │ ├── IconCell.swift
│ │ │ ├── IconEffectView.swift
│ │ │ ├── Info.plist
│ │ │ ├── LockScreenViewController.swift
│ │ │ ├── SettingsViewController.swift
│ │ │ ├── WidgetCell.swift
│ │ │ ├── WidgetsOwnerProtocol.swift
│ │ │ └── WidgetView.swift
│ │ └── Widgets.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── final
│ │ ├── License.txt
│ │ ├── LockSearch
│ │ │ ├── AnimatorFactory.swift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-60.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ │ └── Icon-Spotlight-40.png
│ │ │ │ ├── background.imageset
│ │ │ │ │ ├── background.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon1.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon2.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon3.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon4.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon5.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon6.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon7.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon8.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── img_0322.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── img_0322.jpg
│ │ │ │ ├── iris-icon.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ └── shinkon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── shinkon.png
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── FooterCell.swift
│ │ │ ├── IconCell.swift
│ │ │ ├── IconEffectView.swift
│ │ │ ├── Info.plist
│ │ │ ├── LockScreenViewController.swift
│ │ │ ├── SettingsViewController.swift
│ │ │ ├── WidgetCell.swift
│ │ │ ├── WidgetsOwnerProtocol.swift
│ │ │ └── WidgetView.swift
│ │ └── Widgets.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── License.txt
│ ├── LockSearch
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-60.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ └── Icon-Spotlight-40.png
│ │ │ ├── background.imageset
│ │ │ │ ├── background.jpg
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── icon1.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon2.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon3.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon4.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon5.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon6.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon7.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon8.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── img_0322.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── img_0322.jpg
│ │ │ ├── iris-icon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ └── shinkon.imageset
│ │ │ ├── Contents.json
│ │ │ └── shinkon.png
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── FooterCell.swift
│ │ ├── IconCell.swift
│ │ ├── IconEffectView.swift
│ │ ├── Info.plist
│ │ ├── LockScreenViewController.swift
│ │ ├── SettingsViewController.swift
│ │ ├── WidgetCell.swift
│ │ ├── WidgetsOwnerProtocol.swift
│ │ └── WidgetView.swift
│ └── Widgets.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 23-animator-keyframe-animations
│ ├── challenge
│ │ ├── License.txt
│ │ ├── LockSearch
│ │ │ ├── AnimatorFactory.swift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-60.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ │ └── Icon-Spotlight-40.png
│ │ │ │ ├── background.imageset
│ │ │ │ │ ├── background.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon1.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon2.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon3.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon4.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon5.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon6.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon7.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon8.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── img_0322.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── img_0322.jpg
│ │ │ │ ├── iris-icon.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ └── shinkon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── shinkon.png
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── FooterCell.swift
│ │ │ ├── IconCell.swift
│ │ │ ├── IconEffectView.swift
│ │ │ ├── Info.plist
│ │ │ ├── LockScreenViewController.swift
│ │ │ ├── SettingsViewController.swift
│ │ │ ├── WidgetCell.swift
│ │ │ ├── WidgetsOwnerProtocol.swift
│ │ │ └── WidgetView.swift
│ │ └── Widgets.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── final
│ │ ├── License.txt
│ │ ├── LockSearch
│ │ │ ├── AnimatorFactory.swift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-60.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ │ └── Icon-Spotlight-40.png
│ │ │ │ ├── background.imageset
│ │ │ │ │ ├── background.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon1.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon2.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon3.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon4.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon5.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon6.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon7.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon8.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── img_0322.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── img_0322.jpg
│ │ │ │ ├── iris-icon.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ └── shinkon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── shinkon.png
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── FooterCell.swift
│ │ │ ├── IconCell.swift
│ │ │ ├── IconEffectView.swift
│ │ │ ├── Info.plist
│ │ │ ├── LockScreenViewController.swift
│ │ │ ├── SettingsViewController.swift
│ │ │ ├── WidgetCell.swift
│ │ │ ├── WidgetsOwnerProtocol.swift
│ │ │ └── WidgetView.swift
│ │ └── Widgets.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── License.txt
│ ├── LockSearch
│ │ ├── AnimatorFactory.swift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-60.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ └── Icon-Spotlight-40.png
│ │ │ ├── background.imageset
│ │ │ │ ├── background.jpg
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── icon1.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon2.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon3.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon4.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon5.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon6.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon7.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon8.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── img_0322.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── img_0322.jpg
│ │ │ ├── iris-icon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ └── shinkon.imageset
│ │ │ ├── Contents.json
│ │ │ └── shinkon.png
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── FooterCell.swift
│ │ ├── IconCell.swift
│ │ ├── IconEffectView.swift
│ │ ├── Info.plist
│ │ ├── LockScreenViewController.swift
│ │ ├── SettingsViewController.swift
│ │ ├── WidgetCell.swift
│ │ ├── WidgetsOwnerProtocol.swift
│ │ └── WidgetView.swift
│ └── Widgets.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 24-animator-interactive-animations
│ ├── challenge
│ │ ├── License.txt
│ │ ├── LockSearch
│ │ │ ├── AnimatorFactory.swift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-60.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ │ └── Icon-Spotlight-40.png
│ │ │ │ ├── background.imageset
│ │ │ │ │ ├── background.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon1.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon2.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon3.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon4.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon5.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon6.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon7.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon8.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── img_0322.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── img_0322.jpg
│ │ │ │ ├── iris-icon.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ └── shinkon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── shinkon.png
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── FooterCell.swift
│ │ │ ├── IconCell.swift
│ │ │ ├── IconEffectView.swift
│ │ │ ├── Info.plist
│ │ │ ├── LockScreenViewController.swift
│ │ │ ├── SettingsViewController.swift
│ │ │ ├── WidgetCell.swift
│ │ │ ├── WidgetsOwnerProtocol.swift
│ │ │ └── WidgetView.swift
│ │ └── Widgets.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── final
│ │ ├── License.txt
│ │ ├── LockSearch
│ │ │ ├── AnimatorFactory.swift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-60.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ │ └── Icon-Spotlight-40.png
│ │ │ │ ├── background.imageset
│ │ │ │ │ ├── background.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon1.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon2.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon3.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon4.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon5.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon6.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon7.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon8.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── img_0322.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── img_0322.jpg
│ │ │ │ ├── iris-icon.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ └── shinkon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── shinkon.png
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── FooterCell.swift
│ │ │ ├── IconCell.swift
│ │ │ ├── IconEffectView.swift
│ │ │ ├── Info.plist
│ │ │ ├── LockScreenViewController.swift
│ │ │ ├── SettingsViewController.swift
│ │ │ ├── WidgetCell.swift
│ │ │ ├── WidgetsOwnerProtocol.swift
│ │ │ └── WidgetView.swift
│ │ └── Widgets.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── License.txt
│ ├── LockSearch
│ │ ├── AnimatorFactory.swift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-60.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ └── Icon-Spotlight-40.png
│ │ │ ├── background.imageset
│ │ │ │ ├── background.jpg
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── icon1.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon2.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon3.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon4.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon5.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon6.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon7.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon8.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── img_0322.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── img_0322.jpg
│ │ │ ├── iris-icon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ └── shinkon.imageset
│ │ │ ├── Contents.json
│ │ │ └── shinkon.png
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── FooterCell.swift
│ │ ├── IconCell.swift
│ │ ├── IconEffectView.swift
│ │ ├── Info.plist
│ │ ├── LockScreenViewController.swift
│ │ ├── SettingsViewController.swift
│ │ ├── WidgetCell.swift
│ │ ├── WidgetsOwnerProtocol.swift
│ │ └── WidgetView.swift
│ └── Widgets.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 25-animator-view-controller-transitions
│ ├── final
│ │ ├── License.txt
│ │ ├── LockSearch
│ │ │ ├── AnimatorFactory.swift
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-60.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ │ └── Icon-Spotlight-40.png
│ │ │ │ ├── background.imageset
│ │ │ │ │ ├── background.jpg
│ │ │ │ │ └── Contents.json
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon1.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon2.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon3.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon4.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon5.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon6.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon7.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── icon8.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ └── Icon-60@3x.png
│ │ │ │ ├── img_0322.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── img_0322.jpg
│ │ │ │ ├── iris-icon.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ └── shinkon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── shinkon.png
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── FooterCell.swift
│ │ │ ├── IconCell.swift
│ │ │ ├── IconEffectView.swift
│ │ │ ├── Info.plist
│ │ │ ├── LockScreenViewController.swift
│ │ │ ├── PresentTransition.swift
│ │ │ ├── SettingsViewController.swift
│ │ │ ├── WidgetCell.swift
│ │ │ ├── WidgetsOwnerProtocol.swift
│ │ │ └── WidgetView.swift
│ │ └── Widgets.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── License.txt
│ ├── LockSearch
│ │ ├── AnimatorFactory.swift
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-60.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ ├── Icon-Spotlight-40@3x.png
│ │ │ │ └── Icon-Spotlight-40.png
│ │ │ ├── background.imageset
│ │ │ │ ├── background.jpg
│ │ │ │ └── Contents.json
│ │ │ ├── Contents.json
│ │ │ ├── icon1.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon2.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon3.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon4.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon5.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon6.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon7.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── icon8.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ └── Icon-60@3x.png
│ │ │ ├── img_0322.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── img_0322.jpg
│ │ │ ├── iris-icon.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ └── shinkon.imageset
│ │ │ ├── Contents.json
│ │ │ └── shinkon.png
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── FooterCell.swift
│ │ ├── IconCell.swift
│ │ ├── IconEffectView.swift
│ │ ├── Info.plist
│ │ ├── LockScreenViewController.swift
│ │ ├── SettingsViewController.swift
│ │ ├── WidgetCell.swift
│ │ ├── WidgetsOwnerProtocol.swift
│ │ └── WidgetView.swift
│ └── Widgets.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 26-simple-3d-animations
│ ├── challenge
│ │ ├── License.txt
│ │ ├── OfficeBuddy
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── CenterViewController.swift
│ │ │ ├── ContainerViewController.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ └── menu.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── menu@2x.png
│ │ │ │ └── menu@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── MenuButton.swift
│ │ │ ├── MenuItem.swift
│ │ │ └── SideMenuViewController.swift
│ │ └── OfficeBuddy.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ ├── final
│ │ ├── License.txt
│ │ ├── OfficeBuddy
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── CenterViewController.swift
│ │ │ ├── ContainerViewController.swift
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ └── menu.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── menu@2x.png
│ │ │ │ └── menu@3x.png
│ │ │ ├── Info.plist
│ │ │ ├── MenuButton.swift
│ │ │ ├── MenuItem.swift
│ │ │ └── SideMenuViewController.swift
│ │ └── OfficeBuddy.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── starter
│ ├── License.txt
│ ├── OfficeBuddy
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── CenterViewController.swift
│ │ ├── ContainerViewController.swift
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ └── menu.imageset
│ │ │ ├── Contents.json
│ │ │ ├── menu@2x.png
│ │ │ └── menu@3x.png
│ │ ├── Info.plist
│ │ ├── MenuButton.swift
│ │ ├── MenuItem.swift
│ │ └── SideMenuViewController.swift
│ └── OfficeBuddy.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── 27-intermediate-3d-animations
│ ├── challenge
│ │ ├── ImageGallery
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── Hurricane_Douglas.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Hurricane_Douglas_2002.jpg
│ │ │ │ ├── Hurricane_Irene.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Hurricane_Irene.jpg
│ │ │ │ ├── Hurricane_Katia.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Hurricane_Katia.jpg
│ │ │ │ └── Hurricane_Norbert.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Hurricane_Norbert_2008.jpg
│ │ │ ├── ImageViewCard.swift
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── ImageGallery.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ ├── final
│ │ ├── ImageGallery
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.xib
│ │ │ │ └── Main.storyboard
│ │ │ ├── Images.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-1024.png
│ │ │ │ │ ├── Icon-60@2x.png
│ │ │ │ │ ├── Icon-60@3x.png
│ │ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ │ ├── Hurricane_Douglas.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Hurricane_Douglas_2002.jpg
│ │ │ │ ├── Hurricane_Irene.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Hurricane_Irene.jpg
│ │ │ │ ├── Hurricane_Katia.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ └── Hurricane_Katia.jpg
│ │ │ │ └── Hurricane_Norbert.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Hurricane_Norbert_2008.jpg
│ │ │ ├── ImageViewCard.swift
│ │ │ ├── Info.plist
│ │ │ └── ViewController.swift
│ │ ├── ImageGallery.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ └── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── License.txt
│ └── starter
│ ├── ImageGallery
│ │ ├── AppDelegate.swift
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.xib
│ │ │ └── Main.storyboard
│ │ ├── Images.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-1024.png
│ │ │ │ ├── Icon-60@2x.png
│ │ │ │ ├── Icon-60@3x.png
│ │ │ │ ├── Icon-Small@2x.png
│ │ │ │ ├── Icon-Small@3x.png
│ │ │ │ ├── Icon-Spotlight-40@2x.png
│ │ │ │ └── Icon-Spotlight-40@3x.png
│ │ │ ├── Hurricane_Douglas.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Hurricane_Douglas_2002.jpg
│ │ │ ├── Hurricane_Irene.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Hurricane_Irene.jpg
│ │ │ ├── Hurricane_Katia.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── Hurricane_Katia.jpg
│ │ │ └── Hurricane_Norbert.imageset
│ │ │ ├── Contents.json
│ │ │ └── Hurricane_Norbert_2008.jpg
│ │ ├── ImageViewCard.swift
│ │ ├── Info.plist
│ │ └── ViewController.swift
│ ├── ImageGallery.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── License.txt
├── iOS_Animations_by_Tutorials_v6.0.epub
├── iOS_Animations_by_Tutorials_v6.0.pdf
└── __MACOSX
1258 directories, 3232 files
标签:
iOS_Animations_by_Tutorials_v6.0.0.zip (iOS13 & Swift5.1 & Xcode11)
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论