web-dev-qa-db-ja.com

iOS UILabel textColorがダークモードで更新されない

アプリのタイムスロットを表示するコレクションビューがあります。ダークモードで、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
            }

        }
    }

}

結果は次のとおりです。

enter image description hereenter image description here

3
Teja Nandamuri

どういうわけか、コレクションビューのラベルが期待どおりに機能していません。私は別の設定を試しましたが、どれもうまくいきませんでした。代わりにボタンを使用してしまい、私の場合はうまくいきました。これがラベルで機能するようになったら、回答を更新します。

0
Teja Nandamuri

デフォルトの色が黒ではなくUIlabelの色に変更されているため、iOS 13からデフォルトの色が黒として機能しません。

背景色を設定した後、テキストの色を設定してみてください。

0
Reed