こんちは。渡部です。
今回はアプリがバックグラウンドに行った時に表示されていた画面をマスクする方法です。
多分10分あればできちゃいます。
手順
・適当に画面を用意する
・コードを書く
・おしまい
適当に画面を用意する
まず適当なプロジェクトのViewControllerに 弊社サービスを牛耳る(二回目)ふろぐんのimageViewを貼り付けます。
普通にこのままバックグラウンドに行くとこうなります。
バックグラウンドに行ったことを検知するのはAppDelegateのお仕事です。
バックグラウンドに行った際にマスクするviewを表示し、 アクティブに復帰した際にマスクするviewを非表示にします。
コードを書く
バックグラウンドに行く際に呼ばれるのが
applicationWillResignActive
復帰する際に呼ばれるのが
applicationDidBecomeActive
これらに追加していきます。
AppDelegateにviewと処理を追加します。
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? var backView: UIView? // マスクにするview func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // viewを黒色に指定 self.backView?.backgroundColor = UIColor.black return true } func applicationWillResignActive(_ application: UIApplication) { // アクティブじゃなくなる際にbackViewをaddする self.window?.addSubview(backView!) } func applicationDidBecomeActive(_ application: UIApplication) { // 追加したbackViewをremoveする self.backView?.removeFromSuperview() } }
すると、バックグラウンドに行く際にこうなります。
うぇい
おわりに
むかーしむかし、セキュリティが厳しい会社のアプリを作った時、
この機能をつけた記憶があります。
この機能でセキュリティが担保できるとは思いませんが、
視覚的には効果があるので(簡単ですし)やってみるのも良いかもしれません。