【问题标题】:Labels and text inside Text Field becoming white automatically for iOS 13 Dark mode对于 iOS 13 深色模式,文本字段中的标签和文本会自动变为白色
【发布时间】:2019-09-23 11:23:14
【问题描述】:

我的应用程序适用于低于 13.0 的 iOS 版本,但是当我将设备更新到 iOS 13 并选择深色模式时,标签会自动变为白色(之前是黑色),而浅色模式不是这种情况(其中它工作正常,黑色标签保持黑色)。

还有其他人遇到过同样的情况吗?到目前为止是否有任何解决方法?

【问题讨论】:

    标签: ios swift ios13


    【解决方案1】:

    以前UILabeldefault 颜色是Black Color,但从iOS 13 开始,默认值是LabelColor 女巫是来自系统UI 的语义颜色 名称元素颜色。要使其始终为黑色,请将颜色更改为 black(不是默认值)。但请注意,背景颜色可能会类似地变为黑色(从白色)。

    您还可以通过在主窗口上设置 UserInterfaceStyle 来完全消除暗模式

    window!.overrideUserInterfaceStyle = .light
    

    注意:在 iOS 13 之前在 AppDelegate 中的窗口,现在在 SceneDelegate 中。

    【讨论】:

      【解决方案2】:

      如果您使用System 颜色,它将在暗模式下自动更改。因此您可以在应用程序中使用自定义颜色。

      或者您可以在Info.plist文件中设置键User Interface Style和值Light

      【讨论】:

        【解决方案3】:

        这是因为您的标签的文本颜色设置为默认值。在深色模式下,文本标签的默认颜色为白色,视图为黑色

        【讨论】:

          【解决方案4】:
          TextField(placeholder, text: self.$value)
                          .colorScheme(.light)
          

          您应该添加 colorScheme 属性以避免文本字段处于暗模式。

          【讨论】:

            【解决方案5】:

            将 textField 文本颜色更改为黑色(不要保留默认颜色)和 使用下面的代码占位符颜色

            yourTextField.attributedPlaceholder = NSAttributedString(string: "Password", attributes: [NSAttributedString.Key.foregroundColor: UIColor.lightGray])
            

            【讨论】:

              【解决方案6】:

              在您应用的 plist 文件中将 UIUserInterfaceStyle 设置为 LightDark 以针对整个应用进行更改

              如果有人只是想恢复旧行为,您可以在 Info.plist 中禁用应用的暗模式支持:

              <key>UIUserInterfaceStyle</key>
              <string>Light</string>
              

              【讨论】:

                猜你喜欢
                • 2021-04-17
                • 2023-03-08
                • 2020-01-25
                • 2023-03-17
                • 1970-01-01
                • 2020-06-07
                • 2020-04-07
                • 2019-11-22
                • 1970-01-01
                相关资源
                最近更新 更多