iOS13のダークモード対応について
iOS13でダークモード対応らしいです。
iOS13がリリースされた暁に自分が作ったアプリがダーク色にならなかったら恥ずかしいですね。
ということでネットで調べて対応してみました。codeで直接色指定をしていなければ、ほとんどの場合、story board上で変更できます。
この際にsystem colorを使うのがミソです。今まで色々とcustom colorを使っていたのですが、この際簡単にダークモードに対応させるためappleが指定するsystem colorに変更しました。
ハマりポイントは、おそらくViewや部品などをstory board上で重ねてレイアウトしていると思うのですが、どのViewのbackgroud colorでsystem colorを指定するかですね。
story board上でlightモードとdarkモードの切り替えは出来ますが、最低でもシュミレーターで確かめないと思ったとおりの色にはならないです。
あと私だけかもしれませんが、UITextViewでハマりました。これをsystem colorに変更しても変わらない。半日ぐらい悩んだあと、ふとUITextViewをhtmlモードで利用していることを思い出し、以下のコードを追加することでダークモードに対応することができました。
// iOS13 ダークモード対応
if (@available(iOS 13.0, *)) {
if(self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark){
[attributedString addAttribute:NSForegroundColorAttributeName
value:[UIColor whiteColor]
range:NSMakeRange(0, [attributedString length])];
}else{
[attributedString addAttribute:NSForegroundColorAttributeName
value:[UIColor blackColor]
range:NSMakeRange(0, [attributedString length])];
}
}
その他、諸々ありましたが、ほぼほぼ対応できたと思います。