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])];

        }

    }

 

その他、諸々ありましたが、ほぼほぼ対応できたと思います。