私のアプリの大部分は、ネイティブ実装ではまだ利用できない機能を提供するための Web ビューで構成されています。Web チームは、Web サイトにダーク テーマを実装する予定はありません。そのため、私のアプリは、iOS 13 のダーク モード サポートと半分ずつの見た目になります。
ウェブサイトのテーマに合わせてアプリが常にライトモードを表示するように、ダークモードのサポートをオプトアウトすることは可能ですか?
ベストアンサー1
まず、こちらはアップルの参入ダークモードのオプトアウトに関する内容。このリンクの内容は、Xcode 11 および iOS 13 向けに書かれています。
info.plist ファイル経由のアプリ全体 (Xcode 12)
info.plist ファイルで次のキーを使用します。
UIUserInterfaceStyle
そして、 の値を割り当てますLight
。
割り当てのXML UIUserInterfaceStyle
:
<key>UIUserInterfaceStyle</key>
<string>Light</string>
UIUserInterfaceStyle に関する Apple ドキュメント
ビルド設定の info.plist 経由のアプリ全体 (Xcode 13)
(2024年からは単に「外観」というラベルが付けられます。XML自体はまったく変更されていません。)
古い Xcode:
ウィンドウプロパティ経由のアプリウィンドウ全体
overrideUserInterfaceStyle
アプリの変数に対して設定できますwindow
。これは、ウィンドウ内に表示されるすべてのビューに適用されます。これは iOS 13 で利用可能になったため、以前のバージョンをサポートするアプリの場合は、可用性チェックを含める必要があります。
プロジェクトの作成方法に応じて、これはAppDelegate
またはSceneDelegate
ファイル内にある場合があります。
if #available(iOS 13.0, *) {
window?.overrideUserInterfaceStyle = .light
}
個別のUIViewControllerまたはUIView
s または's変数overrideUserInterfaceStyle
に対して設定できます。これは iOS 13 で利用可能になったため、以前のバージョンをサポートするアプリの場合は可用性チェックを含める必要があります。UIViewController
UIView
overrideUserInterfaceStyle
迅速
override func viewDidLoad() {
super.viewDidLoad()
// overrideUserInterfaceStyle is available with iOS 13
if #available(iOS 13.0, *) {
// Always adopt a light interface style.
overrideUserInterfaceStyle = .light
}
}
Objective-Cの哀れな魂たちへ
if (@available(iOS 13.0, *)) {
self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}
に対して設定するとUIViewController
、ビュー コントローラとその子は定義されたモードを採用します。
に対して設定するとUIView
、ビューとその子は定義されたモードを採用します。
overrideUserInterfaceStyle に関する Apple ドキュメント
SwiftUI View による個別のビュー
preferredColorScheme
または にlight
設定できますdark
。指定された値によって、プレゼンテーションの配色が設定されます。
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Light Only")
.preferredColorScheme(.light)
}
}
PreferredColorScheme に関する Apple ドキュメント
この回答をフィードバックによって改善してくれた@Aron Nelson、@Raimundas Sakalauskas、@NSLeaderおよび@rmaddyに感謝します。