iOSチュートリアルライブラリ"OnBoard"で初期画面を作成する(swift)

## はじめに
* iOSのチュートリアルライブラリである**"OnBoard"**を使って, 初期画面を作成します.
* また, チュートリアル画面は初回起動時のみ表示されるようにします.


## 実行環境
* Xcode Verison 10.1
* Swift 4.2

## インストール
* cocoapodsでインストール
 
```Podfile
target 'hoge' do
  use_frameworks!
  
  // ↓ add
  pod "Onboard"

end
```

* pod update または pod installで導入する.

## コード
```AppDelegate.swift
import UIKit
import Onboard


@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        //画面分岐に関する処理
        let userDefault = UserDefaults.standard.bool(forKey: "firstLaunch")
        Logger.debugLog(userDefault)
        if userDefault == true {
            // ↓画面分岐処理確認用
            //UserDefaults.standard.set(false, forKey: "firstLaunch")
            print("初回起動でない")
        } else {
            //UserDefaults.standard.set(true, forKey: "firstLaunch")
            print("初回起動時")
            
            // チュートリアル画面表示
            setOnBoard(application)
        }
}
```




```AppDelegate.swift
extension AppDelegate {
    /// チュートリアル画面の初期設定
    func setOnBoard(_ application: UIApplication) {
        if true {
            let content1 = OnboardingContentViewController(
                title: "titleだよ",
                body: "bodyだよ",
                image: nil,
                buttonText: "",
                action: nil
            )
            let content2 = OnboardingContentViewController(
                title: "Titleだよ",
                body: "Bodyだよ",
                image: nil,
                buttonText: "",
                action: nil
            )
            let content3 = OnboardingContentViewController(
                title: "Titleだよ",
                body: "Bodyだよ",
                image: nil,
                buttonText: "はじめる",
                action: {
                    //遷移
                    let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
                    let homeView = storyboard.instantiateViewController(withIdentifier: "Map")as! ViewController
                    self.window?.rootViewController = homeView
                    self.window?.makeKeyAndVisible()
                    //skipボタンを押したときに, 初回起動ではなくす
                    UserDefaults.standard.set(true, forKey: "firstLaunch")
                }
            )
            
            let bgImageURL = NSURL(string: "https://www.pakutaso.com/shared/img/thumb/P1030938-Edit_TP_V4.jpg")!
            let bgImage = UIImage(data: NSData(contentsOf: bgImageURL as URL)! as Data)
            let vc = OnboardingViewController(
                backgroundImage: bgImage,
                contents: [content1, content2, content3]
            )
            
            vc?.allowSkipping = true
            vc?.skipHandler = {
                print("skip")
                //遷移
                let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
                let homeView = storyboard.instantiateViewController(withIdentifier: "Map")as! ViewController
                self.window?.rootViewController = homeView
                self.window?.makeKeyAndVisible()
                //skipボタンを押したときに, 初回起動ではなくす
                UserDefaults.standard.set(true, forKey: "firstLaunch")
            }
            
            
            // 最後のページが表示されるとき, skipボタンを消す
            content3.viewWillAppearBlock = {
                    vc?.skipButton.isHidden = true
            }
            
            // 最後のページが消えるとき, skipボタンを表示(前ページに戻った場合のため)
            content3.viewDidDisappearBlock = {
                    vc?.skipButton.isHidden = false
            }
            
            window?.rootViewController = vc
        }
    }
}
```

## 参考
* [OnBoard -GitHub-](https://github.com/mamaral/Onboard)
* [OnBoardというライブラリを使ってみた](https://qiita.com/akatsuki174/items/edb50b44efc13393373c)
* [OnboardでiOSアプリのウォークスルー画面を簡単に実装](https://qiita.com/ysk_1031/items/5c6c7163bd024313a197)