将棋プログラミング

(将棋に関する)ソフトウェア開発のノウハウ等。

iOS 13 のダークモードへの対応(ダークモードにしない)

Xcode 10.2 以降、旧CPUに対する最適化にバグがあるので、Xcode 10.1 を使い続けていたが、2020年4月からは、いよいよ Xcode 11 以降で作成しないと、App Store に提出できなくなる。
ykakinoki.hateblo.jp

ITMS-90725: SDK Version Issue - This app was built with the iOS 12.1 SDK. Starting April 2020, all iOS apps submitted to the App Store must be built with the iOS 13 SDK or later, included in Xcode 11 or later. 

Xcode 11 以降でアプリを作成すると、デフォルトで、TableView 等が自動的にダークモードへ対応される。その場合、iOS 12 までダークモードがなかったので、文字が読めなくなったりする。
ダークモードへ対応するか否かは検討すべきだが、当面、ダークモードにしなければ、問題が起きない。

1. アプリ全体をダークモードにしない

Info.plist に UIUserInterfaceStyle のキーを追加し、"Light" の文字列を設定する。

	<key>UIUserInterfaceStyle</key>
	<string>Light</string>

f:id:ykakinoki:20200315092734p:plain
Info.plist

2. ViewController 毎に、ダークモードにしない

viewDidLoad に次のコードを追加する(Objective C)。

if (@available(iOS 13.0, *)) {
    self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}


なお、最適化のバグは、構造体に無意味な変数を追加することで回避できた。

参考:
qiita.com