Sponsor Link
環境&対象
- macOS14.5
- Xcode 15.4
- iOS 17.5
- Swift 5.9
Darkモード
macOS/ iOS では ユーザーが Appearance を選択できるという機能があります。
Appearance としては、基本的に2つの選択肢があり、その1つが Dark モードです。
もう1つは、Light モードです。
# 自動で切り替えるモードも用意されています。
参考
supporting_dark_mode_in_your_interfaceApple Developer Documentation
Darkモード対応しない
Apple は、Dark モードに 対応することを 推奨していますが、さまざまな理由等で対応しない/できないケースもあります。
Apple が提供する AppKit/SwiftUI の個別パーツは、パーツとしては個別に対応してしまいます。
つまり、モードに応じて適切な表示に自動で切り替わります。
Apple が提供する機能をそのまま組み合わせたアプリであれば そのまま Dark モード対応として完結することもありますが、
View をカスタムしていると、Dark モード対応として、細かい対応が必要になるケースもあります。
そのようなケースでも、Apple が提供するパーツそのままの箇所は、自動で切り替わってしまうため アプリ全体で見ると表示が破綻してしまうケースがあります。
Dark モード対応するのが より良いのでしょうが すぐに 対応できない時には、OS の Appearance が変更されても 表示を切り替えない ということをした方が良いです。
アプリの Info.plist に以下の設定を追加すると、OS として Appearance が変更されても、アプリはその変更を無視します。
<key>NSRequiresAquaSystemAppearance</key>
<string>true</string>
対応が完了したら・・・
Dark モード対応できたならば、以下のように、false に設定すると、OS の Appearance が変更されたときに、アプリはその変更を無視しなくなります。
<key>NSRequiresAquaSystemAppearance</key>
<string>false</string>
確認していませんが、Key を削除してしまっても良いと思われます。
おまけ:iOS対応
iOS の場合には、異なるキーと値が必要です。
キー:UIUserInterfaceStyle
値(String):Light
まとめ
Darkモード対応しない設定
- Info.plist に (キー: “NSRequiresAquaSystemAppearance”, 値: “true”) を追加する
- アプリ側で ダークモードに対応できたら、”false” にする。
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
SwiftUI おすすめ本
SwiftUI を理解するには、以下の本がおすすめです。
SwiftUI ViewMatery
SwiftUI で開発していくときに、ViewやLayoutのための適切なmodifierを探すのが大変です。
英語での説明になってしまいますが、以下の”SwiftUI Views Mastery Bundle”という本がビジュアル的に確認して探せるので、便利です。
英語ではありますが、1ページに コードと画面が並んでいるので、非常にわかりやすいです。
View に適用できる modifier もわかりやすく説明されているので、ビューの理解だけではなく、どのような装飾ができるかも簡単にわかります。
超便利です
販売元のページは、こちらです。
SwiftUI 徹底入門
# SwiftUI は、毎年大きく改善されていますので、少し古くなってしまいましたが、いまでも 定番本です。
Swift学習におすすめの本
詳解Swift
Swift の学習には、詳解 Swift という書籍が、おすすめです。
著者は、Swift の初期から書籍を出していますし、Swift の前に主力言語だった Objective-C という言語についても同様の書籍を出しています。
最新版を購入するのがおすすめです。
現時点では、上記の Swift 5 に対応した第5版が最新版です。
Sponsor Link