59
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

ダークモード適用を回避する方法

はじめに

iOS13から遂にダークモードが導入されました。
iOS13 プレビュー記事

今後のiOSアプリ作成にはダークモードを適用が前提となっています。
しかし、アプリ独自のレイアウトを設定しているために、
すぐにはダークモードを適用できない場合があると思います。

そこで今回は、ダークモードを回避する方法を共有します。

UIViewControllerごとに設定

UIViewControllerに追加されたoverrideUserInterfaceStyleの値を指定します。
デフォルトはunspecified(指定なし)です。ユーザーの設定によって変化します。

説明
unspecified 指定なし(デフォルト)
light ライトモード(明るい外観)
dark ダークモード(暗い外観)

UIUserInterfaceStyle - UIKit | Apple Developer Documentation

サンプルコード

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // 常にライトモード(明るい外観)を指定することでダークモード適用を回避
        self.overrideUserInterfaceStyle = .light
    }

}

アプリ全体に適用する

アプリ全体に適用するにはInfo.plistUIUserInterfaceStyleパラメータをLightにします。
これで常にライトモードになります。
なおAutomatic(自動)Dark(ダークモード)を指定することもできます。
なお設定しない場合や不正な値が入力された場合は常にLightが採用されます。

まとめ

これらの方法でダークモードの適用を回避することができました。
しかし、Appleはダークモードの適用を推奨しているので、
いずれかのタイミングでアプリにダークモードを適用させる対策が必要です。

この対応はあくまで一時的な対応か外観を変化させたくない特段の事情がある場合に止めるべきでしょう。

参照

Choosing a Specific Interface Style for Your iOS App | Apple Developer Documentation
外観モードの変更方法について

Implementing Dark Mode on iOS - WWDC 2019 - Videos - Apple Developer
WWDC2019のダークモードに関するセッション。動画やサンプルコードがあります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
59
Help us understand the problem. What are the problem?