swift - 默认的tableview单元格不响应黑暗模式

使用自定义单元格,我可以使黑暗模式/正常模式正常工作。 但是,当使用Apple提供的默认框架单元时,无论我启用哪种模式,它都保持白色。 我在这里读

ios13表格模式单元格无法识别暗模式更改?

大约相同的问题。 答案告诉我使用这个:

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)

    if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
        removeAndReaddGradientIfNeeded()
    }
}

但是我不确定我应该如何使用它,以及它与我的细胞之间的关系。 现在,我的单元格代码是这样的:

if #available(iOS 13, *) {
    cell.backgroundColor = UIColor.systemBackground
    cell.textLabel?.textColor = UIColor(named: "MainLabelColor")
    cell.detailTextLabel?.textColor = UIColor(named: "SubLabelColor")
}

我在资产中使用系统颜色和自定义颜色有两种模式,一种用于亮,一种用于暗。 现在,这在自定义单元格中可以正常工作,但在默认情况下不行。

谁能告诉我如何在单元格中使用委托函数?

您是否尝试更改contentView背景颜色? 因为内容视图位于单元格的顶部。

if #available(iOS 13, *) {
    cell.contentView.backgroundColor = UIColor.systemBackground
//For named color you have to resolve it.
 cell.textLabel?.textColor = UIColor(named: "MainLabelColor")?.resolvedColor(with: self.traitCollection)
 cell.detailTextLabel?.textColor = UIColor(named: "SubLabelColor")?.resolvedColor(with: self.traitCollection)

 //MARK:- Even If your Viewcontroller disabled dark mode, tableView cell will be enabled.
    self.overrideUserInterfaceStyle = .unspecified
}

要支持黑暗模式,请确保已删除以下替代项:-

UserInterfaceStyle的默认值为unspecified。 因此,您可能已启用userInterfaceStyle来点亮代码或列表文件中的某个位置。

在Plist文件中检查以下键值并将其删除:-

<key>UIUserInterfaceStyle</key>
    <string>light</string>

在代码中检查以下行并将其删除。

i)如果键窗口被覆盖为亮灯模式,则整个应用将被强制为亮灯模式。

  UIApplication.shared.keyWindow?.overrideUserInterfaceStyle = .light

ii)如果View Controller被覆盖为亮灯模式,则整个ViewController将被强制为亮灯模式。

 self.overrideUserInterfaceStyle = .light

转载请注明来自askonline.tech,本文标题:swift - 默认的tableview单元格不响应黑暗模式


 Top