LoginSignup
22
18

More than 5 years have passed since last update.

iOSでバックグラウンド時にアプリの実行画面を隠す(マスクする)方法

Last updated at Posted at 2016-08-30

iOSでホームボタンでの切替時にバックグラウンド実行中のアプリの実行画面をマスクしたいときがあります。例えば、TouchIDなどを対応するB2CアプリやB2B/B2E向けのアプリにおいて、バックグラウンドで実行中もセキュリティを担保したい場合を想定しています。

AppDelegate.swiftにて、該当するメソッド内に遷移を記述いたします。キーになるのは、applicationWillResignActive()とapplicationDidBecomeActive()のメソッドです。それぞれバックグラウンドに入るときと、フォアグラウンドに呼び戻されるときにコールされます:

AppDelegate.swift
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    var splashView: UIView?   // 新規で追加するView

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        splashView = UIView(frame: (self.window?.bounds)!)

        // スプラッシュの背景を黒色にしてみる。画像を入れ込みたい場合には、splashViewに対して、addSubviewでUIImageViewなどを追加すれば良い。
        splashView?.backgroundColor = UIColor.blackColor()

        return true
    }

    func applicationWillResignActive(application: UIApplication) {
        // アクティブアプリから外れるときに現在のウインドウ表示項目として、splashViewを追加する。
        self.window?.addSubview(splashView!)
    }

    func applicationDidEnterBackground(application: UIApplication) {
    }

    func applicationWillEnterForeground(application: UIApplication) {
    }

    func applicationDidBecomeActive(application: UIApplication) {
        // 追加したsplashViewをsuperViewから削除する。
        self.splashView?.removeFromSuperview()
    }

    func applicationWillTerminate(application: UIApplication) {
    }
}

※applicationWillEnterForeground()でremoveFromSuperview()を行った場合、コントロールセンターで非アクティブになったときからのアプリ復帰などが対応できませんので、applicationDidBecomeActive()で行うようにしてください。

いかがでしたか。かなりシンプルですが、このプログラムを記述することで、バックグラウンド時にアプリの実行画面のマスクをすることができます。必要に応じて、Splash用のかっこいいロゴなどをUIViewに追加するとそれっぽくなります。

22
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
18