/DTOnboarding

A macOS onboarding component

Primary LanguageSwiftMIT LicenseMIT

DTOnboarding

Swift5 Swift Package Manager GitHub release (latest SemVer) GitHub macOS

A macOS onboarding component.

  • creates a window containing a configurable number of screens
  • use buttons or gestures to navigate
  • component size, layout and content easily are configurable

Installation

Install using Swift Package Manager. Use master branch.

Dependencies

Requirements

  • OS X 10.14+
  • Xcode 11.0 or above

Demo/Example

Either compile and run the example in the Demo folder or see the component used in Crypto Tools.

Usage

Use the following code in your AppDelegate.swift or similar.

class AppDelegate: NSObject, NSApplicationDelegate {
    private var onboardingWindowController: NSWindowController?

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        let config = OnboardingConfig(
            windowWidth: 350,
            windowHeight: 430,
            windowTitle: "my sample title",
            pageCount: 3,
            pageControlWidth: 200,
            pageControlHeight: 20,
            pageControlVerticalDistanceFromBottom: 20, 
            pageTransitionStyle: .stackBook
        )

        let pages = [
            DTPageController(controllerId: "1"),
            DTPageController(controllerId: "2"),
            DTPageController(controllerId: "3")
        ]

        let onboardingController = DTOnboardingController(config: config, pages: pages)
        let frame = onboardingController.view.bounds
        let myWindow = NSWindow(
            contentRect: .init(origin: .zero, size: frame.size),
            styleMask: [.closable, .miniaturizable, .resizable, .titled],
            backing: .buffered,
            defer: false
        )
        myWindow.title = config.windowTitle
        myWindow.center()

        onboardingWindowController = NSWindowController(window: myWindow)
        onboardingWindowController?.contentViewController = onboardingController
        onboardingWindowController?.showWindow(self)
    }
}

License

This software is Open Source under the MIT license, see LICENSE for details.