Smile-Lockというライブラリを試してみました。
URL見るとリクルートライフスタイルで出しているライブラリなんですね。
インストール
CocoaPodsでインストールしました。
target 'MyApp' do use_frameworks! pod 'SmileLock' end
使い方
下のようにWindowやViewに貼り付ける事で利用します。
import UIKit import SmileLock class ViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let kPasswordDigit = 6 let contentView = PasswordContainerView.createWithDigit(kPasswordDigit) if let window = view.window { let baseView = UIView(frame: window.bounds) baseView.addSubview(contentView) contentView.center = baseView.center window.addSubview(baseView) } } }
実行すると下のような表示になります。
パスコードを入力した時の動作はプロトコルに記述します。
passwordInputComplete:input:
は入力が完了した時に呼ばれます。
extension ViewController: PasswordInputCompleteProtocol { func passwordInputComplete(_ passwordContainerView: PasswordContainerView, input: String) { print(input) } func touchAuthenticationComplete(_ passwordContainerView: PasswordContainerView, success: Bool, error: NSError?) { } }
パスコードが違う場合のシェイクはwrongPasswordメソッドを使います。
入力のクリアだけしたい場合はclearInputメソッドを使えば良さそうです。
extension ViewController: PasswordInputCompleteProtocol { func passwordInputComplete(_ passwordContainerView: PasswordContainerView, input: String) { passwordContainerView.wrongPassword() } func touchAuthenticationComplete(_ passwordContainerView: PasswordContainerView, success: Bool, error: NSError?) { } }
それとPasswordContainerViewのプロパティーを触る事で少しだけデザインを変更できます。
ボタンの色を変えるtintColor、ハイライト時の色を変えるhighlightedColor、曇りガラス風デザインに変更できるisVibrancyEffectなどがあります。
タッチIDが使える場合は自動的にViewにタッチボタンが表示されます。
押すとタッチIDを求める表示になります。
指紋認証が完了するとdelegateのtouchAuthenticationComplete
メソッドが呼ばれます。
extension ViewController: PasswordInputCompleteProtocol { func passwordInputComplete(_ passwordContainerView: PasswordContainerView, input: String) { } func touchAuthenticationComplete(_ passwordContainerView: PasswordContainerView, success: Bool, error: NSError?) { print(success) } }
今回は触れないのですが、PasswordUIValidationというクラスを使ったアプローチもあるようです。
THPinViewControllerとの比較
THPinViewControllerより自由度が高いのが良さそうでした。
THPinViewControllerは良く使っているんですが、「パスコード正解時は自動的にdissmissされる為、確認ページへ遷移させるのが難しい」みたいな問題があってそれが解決するだけでも良さそうです。
それと指紋認証を標準で対応してくれているのもありがたいです。