iOS UILabel textColor在黑暗模式下未更新

时间:2019-10-18 19:26:59

标签: swift ios13 xcode11 ios-darkmode

我有一个集合视图,其中显示了应用程序中的时隙。在黑暗模式下,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 here enter image description here

4 个答案:

答案 0 :(得分:1)

有两种解决方案可确保在.dark模式下显示标签颜色: 1.将表格颜色设置为UIColor.labelColor。这将根据设备主题是暗还是亮自动采用

  1. 另一个选项是在xcassets中定义颜色并为不同主题提供颜色变体。您需要将“外观”选择为“任意,深色”以提供多种颜色。请参考下图。使用定义后,您无需像下面的代码片段那样检查主题:

    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 }

您只需设置self.textColor = UIColor(named: "MyBlckColor")

希望这会有所帮助。

enter image description here

答案 1 :(得分:0)

在iOS 13中,默认颜色将无法用作黑色,因为默认颜色已更改为UIlabel的颜色,而不是黑色。

设置背景颜色后尝试设置文本颜色。

答案 2 :(得分:0)

以某种方式,集合视图中的标签无法正常工作。我尝试了不同的配置,但均无效果。我最终改为使用按钮,在我的情况下它起作用了。一旦使用标签,我将更新我的答案。

答案 3 :(得分:0)

如果使用默认标签颜色,则标签颜色在​​深色模式下为白色,在浅色模式下为黑色。

如果您使用自定义颜色,则劳工颜色就是您的自定义颜色。