アプリのタイムスロットを表示するコレクションビューがあります。ダークモードで、UILabelが白い背景に黒いテキスト色を表示していないようです。
ストーリーボードで、ラベルの色を黒(デフォルトの色も試した)に設定しました。
コードでは、ユーザーがセルを選択すると、
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if let cell = collectionView.cellForItem(at: indexPath) as? TimeCell{
cell.timeLabel.toggleTheme(true)
}
}
そして私はUILabel拡張を持っています:
extension UILabel{
func toggleTheme(_ selected : Bool){
if selected{
if #available(iOS 13.0, *) {
if self.traitCollection.userInterfaceStyle == .dark{
self.textColor = UIColor.black
self.backgroundColor = UIColor.white
}else{
self.textColor = UIColor.white
self.backgroundColor = UIColor.black
}
} else {
self.textColor = UIColor.white
self.backgroundColor = UIColor.black
}
}else{
if #available(iOS 13.0, *) {
if self.traitCollection.userInterfaceStyle == .dark{
self.textColor = UIColor.white
self.backgroundColor = UIColor.black
}else{
self.textColor = UIColor.black
self.backgroundColor = UIColor.white
}
} else {
self.textColor = UIColor.black
self.backgroundColor = UIColor.white
}
}
}
}
結果は次のとおりです。
どういうわけか、コレクションビューのラベルが期待どおりに機能していません。私は別の設定を試しましたが、どれもうまくいきませんでした。代わりにボタンを使用してしまい、私の場合はうまくいきました。これがラベルで機能するようになったら、回答を更新します。
デフォルトの色が黒ではなくUIlabelの色に変更されているため、iOS 13からデフォルトの色が黒として機能しません。
背景色を設定した後、テキストの色を設定してみてください。