iOS13中UIKit的文本颜色(textColor)出现白色问题

5

iOS13之前,应用程序布局正常。在苹果最新的iOS13.1暗黑主题和明亮主题更新后,现有应用程序出现了很多问题。例如UITextField的placeHolder颜色从黑色变为白色,UIDatePicker的textColor从黑色变为白色,导致DatePicker文本颜色不可见。

请问是否有人可以帮助解决下面的DatePicker文本颜色问题?由于是白色,所以无法看到文本颜色,应将TextColor更改为黑色。

enter image description here

谢谢,非常感谢您的帮助。

2个回答

10

Swift 5 with iOS 13

一种通用的解决方案,适用于整个应用程序而无需执行任何特定文件更改。

适用于 Xcode 11 或更高版本,在此之前版本的 Xcode 11 上构建上传将失败。

在你的 info.plist 文件中设置 UIUserInterfaceStyle1

enter image description here

或者

AppDelegate.swift

    if #available(iOS 13.0, *) {
        window?.overrideUserInterfaceStyle = .light
    } else {
        // Fallback on earlier versions
    }

我们必须为任何现有的应用程序指定用户界面样式为light


1
如果您在plist中包含UIUserInterfaceStyle,您的应用将被苹果拒绝,如此处所述:https://stackoverflow.com/questions/56546267/ios-13-disable-dark-mode-changes/56546554#56546554 - Benjamin Jimenez
对我来说有效。如果将UIUserInterfaceStyle设置为Light/Dark而不是int 1/0,则可以正确上传应用程序,如果设置为“1”,则上传者将失败。 - Pelanes
搞定了(即使对于基于Flutter的项目也有效) - Bishoy Hanna

8
这可能会对你有所帮助。
override func viewDidLoad() {
    super.viewDidLoad()
    if #available(iOS 13.0, *) {
        // Always adopt a light interface style.
        overrideUserInterfaceStyle = .light
    }
}

11
这是一个糟糕的想法。你的工作是采用暗色模式,而不是阻止它。 - matt
@matt,那么在你开发暗模式支持的同时,使用不可见文本会比这更好吗? - Aequitas
1
@Aequitas 没有法律规定您必须针对iOS 13 SDK进行构建。但是,如果您这样做,深色模式会影响您,因此您应该正确处理它。这并不困难。如果OP描述了选择器的配置方式,我会解释如何使文本在深色模式和浅色模式下都可见。 - matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接