OnboardingKit provides an onboarding flow that is simple and easy to implement.
- iOS 15.0 or later
- Xcode 13.0 or later
- Swift 5.0 or later
There are two ways to use OnboardingKit in your project:
- using Swift Package Manager
- manual install (build frameworks or embed Xcode Project)
To integrate OnboardingKit into your Xcode project using Swift Package Manager, add it to the dependencies value of your Package.swift:
dependencies: [
.package(url: "https://github.com/gmoral/OnboardingKit.git", .upToNextMajor(from: "1.0.0"))
]Swift Package Manager is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies.
If you prefer not to use Swift Package Manager, you can integrate OnboardingKit into your project manually.
import UIKit
import OnboardingKit
class ViewController: UIViewController, OnboardingKitDelegate {
private var onboardingKit: OnboardingKit?
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.async {
self.onboardingKit = OnboardingKit(
slides: [
.init(image: UIImage(named: "imSlide1")!,
title: "Curry Garden, 89 Rue de Bagnolet - Paris "),
.init(image: UIImage(named: "imSlide2")!,
title: "Moom Mam, 19 Rue de Mogador - Paris"),
.init(image: UIImage(named: "imSlide3")!,
title: "Les 3 Bornés, 71 Rue Jean-Pierre Timbaud - Paris"),
.init(image: UIImage(named: "imSlide4")!,
title: "Swadee, 20 Rue du Débarcadère - Paris"),
.init(image: UIImage(named: "imSlide5")!,
title: "Meating Corner, 8 Rue des Lombards - Paris")
],
tintColor: UIColor(red: 220/255, green: 20/255, blue: 60/255, alpha: 1.0), themeFont: UIFont(name: "Kailasa Bold", size: 28) ?? .systemFont(ofSize: 28, weight: .bold))
self.onboardingKit?.delegate = self
self.onboardingKit?.launchOnboarding(rootVC: self)
}
}
// MARK: - OnboardingKitDelegate {
func nextButtonDidTap(atIndex index: Int) {
print("next button is tapped at index: \(index)")
}
func getStartedButtonDidTap() {
onboardingKit?.dismissOnboarding()
onboardingKit = nil
transit(viewController: MainViewController())
}
private func transit(viewController: UIViewController) {
let foregroundScenes = UIApplication.shared.connectedScenes.filter({
$0.activationState == .foregroundActive
})
let window = foregroundScenes
.map({ $0 as? UIWindowScene })
.compactMap({ $0 })
.first?
.windows
.filter({ $0.isKeyWindow })
.first
guard let uWindow = window else { return }
uWindow.rootViewController = viewController
UIView.transition(
with: uWindow,
duration: 0.3,
options: [.transitionCrossDissolve],
animations: nil,
completion: nil)
}
}
class MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel()
label.text = "Main View Controller"
view.addSubview(label)
label.snp.makeConstraints { make in
make.center.equalTo(view)
}
view.backgroundColor = .white
}
}