背景
iOS13から外観モードで、ライトとダークの切り替え機能が追加されました
Appleからはそれぞれのモードでデザインを設計する事が推奨されていますが、現在では、既存アプリへの影響もあり、ダークモードを回避する方法もあります
問題
アプリのデザイン上、常に「Black Color」の背景でデザインしたい時に、Table View CellのDisclosure Indicatorの色がライトモードでは、ほぼ同色化してしまい、識別できなくなる
※アプリとしては、ライトモードオンリーにしていない
※Disclosure Indicatorの色は、"普通"には変えられない
参考(背景色がWhite Color、ライトモードでのDisclosure Indicator)
WhiteにLight Gray?なので、識別可能(いわゆる標準パターン)
ライトモード
BlackにBlackに極めて近いGrayなので、ほぼ識別できない
ダークモード
BlackにDark Gray?なので、識別可能
対応
iPhoneの設定に関係なく、対象Cellにだけ、常にダークモードを適用する
if #available(iOS 13.0, *) {
cell.overrideUserInterfaceStyle = .dark
}
その他の方法として、UITableViewCellをこねくり回したり、Disclosure Indicatorに見せた画像を用意するなど、いくつかありますが、今回に限っては「シンプルな実装でDisclosure Indicatorを識別できるようにしたい」だったので、この方法を採用しました
背景色が「Black Color」、「ライトモード」の時にこのような状態になるという事は、「Black Color」を背景色に使うなよ
とのAppleからのメッセージ性もあるのかな?と少し感じました