【Xcode11】System Background Color イコール白じゃないぞという話

どうも。Reoです。

今回は、 iOS13 から対応が必要になった「ダークモード」についてのお話です。

対応方法は他の方の記事等を参照して欲しいのですが、ちょっと気をつけたい点について書いていこうと思います。

 

環境

Xcode 11.1

iOS 13.1.3

です。

 

System Background Color は白じゃないぞ

Xcode 11.1 から systemBackgroundColor というやつが追加されました。

生成したViewのデフォルトの背景色がコレになっています。

IB上では、白で表示されているのですが、厳密に言えばコイツは白ではないです。

 

端末を ダークモード にしてみるとあら不思議、暗くなります。(ダークモードだしね)

ラベルの色も Default なので色が変わってますね。

 

ちなみに Xcode10 でプロジェクトを開いてみると、System Background Color が存在しないので White Color になってました。

既存のプロジェクトってそのままアップデートかけるともしかして…と一瞬ヒヤッとしましたが、Xcode 10.x ではちゃんと色を指定してるので、その心配はなかったですね。(書きながら検証してるので、実はここ注意だよって書くつもりでした。)

ちゃんとDark Modeに対応しよう!

コレに尽きますね。

まず、Dark Modeに対応する予定がない場合は、プロジェクト全体に設定してしまいましょう。

 

Info.plist に User Interface Style を追加して Light と記述します。

これだけ!

これだけで、 System Background Color は白に固定されます。

 

Default 系の色を使うときは注意

上記のGIFもそうなんですが、Default系(System 〇〇 Color等)はDark Mode対応してない場合に色が変わる可能性があります。

 

ずっとシュミレータで確認してて、ようやく実機で確認すると、アレ?色おかしくね?となり、一瞬原因がわからなかったんですが、これでしたねー。

Dark Modeにしないならさっさと対応しておいた方が良いですね。

反対にDark Mode対応するには、この色達をうまく有効活用していきたいですね!

 

 

何を当たり前なことを書いてるんだって気がするんですが、意外と抜けちゃうような気もするし、実際自分もアレ?ってなったので、気をつけたいですね。

特に普段ダークモードを使わない方は気をつけましょうね・・・!

 

2ヶ月ぶりの記事がこんなちょっと出遅れてる感ある記事ですが、ご愛嬌ということで(なんかちがう)

最新をあんまり追えてない人間なので、自分みたいな人が おっ と思ってくれたら良いなと思って投稿します。

なんか、毎回の記事の最後に、次は〇〇の記事を書きます!とか言ってなんも書いてない気がしますね。久々すぎて、普段どんな風に書いてたっけっていうレベルになってしまいました。うーん。

今回の期間の空き方は本当に良くないので、投稿ペースあげられるように頑張ります。

 

ではでは〜。

 

Swift
コメントは認証制です。詳しくは下記の注意をお読みください。お気軽にコメントお願いします!

Write a Comment

コメント時の注意

「Twitter」「Facebook」「Google+」「WordPress」のいずれかのアカウントをお持ちの方は各アカウントと連携することでコメントできます。 コメントしたことはSNSに流れませんので、アカウントをお持ちの方はこちらの方法でコメントを投稿して下さると嬉しいです。 アカウントをお持ちでない方はメールアドレスで投稿することができます。 初回コメント時は承認後に表示されます。

Related Memo...

UINavigationController + UIScrollView の組み合わせで使っている時に謎の余白ができる時

UINavigationController + UIScrollView の組み合わせで使っていて、UIScrollView 上に AutoLayout で上下左右0で View を設置しているのに、30px程度上にずれてしまうとき。

`navigationController.navigationBar.isTranslucent = false` にすると直るかもしれない。

ScrollView上のコンテンツとNavigationBarの重なっているところが透過していたら多分これで直せるはず。

通常のターゲットではちゃんと動いているのに、iOSSnapshotTestCase を用いたテストでだけこの対応が必要なのよくわからないけれど。。。

iOS

UITableView.RowAnimation の .none はアニメーションするよ

UITableView.RowAnimation の .none はアニメーションがnoneなわけじゃなく、デフォルトの設定を使うよという意味らしい。

The inserted or deleted rows use the default animations.

なのでアニメーションしちゃう。今更の気づき。

 

iOS

記事を書くほどでもないけれどメモっておきたいこと

テスト投稿。

例えばiphone7 の画面サイズ

750 × 1334
半分375 × 667

iOS
more