【问题标题】:What's the default color for placeholder text in UITextField?UITextField 中占位符文本的默认颜色是什么?
【发布时间】:2015-09-12 11:55:12
【问题描述】:

有谁知道UITextField 的占位符文本默认是什么颜色?我正在尝试将UITextView 的文本设置为相同的颜色。我在其他地方读到它是UIColor.lightGrayColor(),但实际上它更轻一些。

【问题讨论】:

  • @Fattie,如果您将值转换为given by Bram De Geyter's answer,您会看到它们转换为#38000019(ARGB32)但是如果图像编辑程序添加了一个白色层顶部有该颜色的图层,结果将是#FFC7C7CC,这与此处给出的答案接近(可能是由于计算蓝色时的舍入,即255 * 0.0980392 = 24,999996)。
  • @Fattie 感谢您指出我们可以通过查看 Apple 代码来了解颜色。我会争辩说,这样做时你可能会更有礼貌。您在这里的第一条评论也是不正确的:它们不是眼球猜测,它们是用吸管确定的,它们也不是完全错误的,因为我特别说过我的答案只是在白色背景上的一个很好的近似值。我已将接受的答案更改为 Bram De Geyter 的答案。与本网站上的其他人互动时,请多考虑/考虑周到。
  • 嗨,auhmann,这完全是错误的。这些值就在代码中,并在现在选择的答案中给出。软件非常精确:)

标签: ios uitextfield uicolor


【解决方案1】:

颜色是#C7C7CD(r:199 g:199 b:205)(正如pterry26所说)

字体系列为HelveticaNeue-Medium,大​​小为16


请注意,这是对屏幕上颜色外观的猜测。对于实际值,只需检查 Apple 代码中的 attributedPlaceholder

【讨论】:

  • @AllenHumphreys 我相信答案很简单,不正确。这只是您使用吸管看到的值 :)
  • @Fattie 感谢您提供不正确的上下文。这就是我真正想要的,因为将其声明为不正确似乎不公平。
  • 嗨@allenh,不要粗鲁,对于程序员来说“猜测颜色”是完全愚蠢的,幼稚的。显然你只是简单地看一下 Apple 的代码,然后使用同样的一行简单代码。反正!欢呼
  • 嗨@Daniel-Fernandes,知道是否有办法在运行时从attributedPlaceholder 中实际提取,以便在iOS 更改其颜色选择时保持同步?我尝试使用UITextField().attributedPlaceholder?.attribute(NSAttributedString.Key.foregroundColor, at: 0, longestEffectiveRange: nil, in: NSRange(location: 0,length: 0)) as! UIColor,但这给出了一个零指针错误,因为在那个阶段没有设置占位符文本(如果你只是先将占位符设置为=“”,它也不起作用)。
【解决方案2】:

您可以通过检查 attributedPlaceholderUITextField 来获得此颜色。

默认好像是:NSColor = "UIExtendedSRGBColorSpace 0 0 0.0980392 0.22";

您可以在UIColor 上添加扩展名(或类别):

extension UIColor {
    static var placeholderGray: UIColor {
        return UIColor(colorLiteralRed: 0, green: 0, blue: 0.0980392, alpha: 0.22)
    }
}

2018,最新的语法只是:

extension UIColor {
    static var officialApplePlaceholderGray: UIColor {
        return UIColor(red: 0, green: 0, blue: 0.0980392, alpha: 0.22)
    }
}

#colorLiteralRed 已弃用。在某些情况下请注意this

【讨论】:

    【解决方案3】:

    我将屏幕截图发送到我的 Mac 并使用了 Photoshop 的吸管工具。对于任何感兴趣的人,这至少是白色背景上占位符颜色的一个非常好的近似值:

    红色:199, 绿色:199, 蓝色:205

    【讨论】:

    • 问题的全部意义在于了解 Apple 实际上是如何以编程方式实现的。显然,查看屏幕截图并猜测最终的平面颜色是微不足道的。
    • @Fattie,虽然我同意知道它是如何以编程方式完成的更有用,但我是提出这个问题的人,这样做解决了我的问题,从而解决了“问题的全部要点"。
    【解决方案4】:

    实际颜色不是纯色,而是具有透明度。所以最接近的颜色是

    红色:4,绿色:4,蓝色:30,Alpha:~22%

    如果你在白色背景下使用它,你会得到@pterry26 上面写的内容。

    【讨论】:

    • 这里仅有的两个不是完全没用的答案之一:)
    • @peterstaev 你刚刚看到这个了吗!?!?如果是这样 - 那太不可思议了
    • @Fattie He-he,或多或少的眼球+反复试验:)
    • 绝对惊人@PeterStaev!仅供参考 BramDeGeyter 在下面的回答,他反转了 Apple 代码并找到了确切的值。
    【解决方案5】:

    只是补充一点,在 iOS 13(及更高版本)中,占位符颜色由 Apple 通过

    UIColor.placeholderText
    

    而且它是动态的(支持黑暗和光明)。

    使用 iOS 13 之前的版本:

    static var placeholderText: UIColor {
      if #available(iOS 13.0, *) {
        return .placeholderText
      }
      return UIColor(red: 60, green: 60, blue: 67)!.withAlphaComponent(0.3)
    }
    

    【讨论】:

    • 对于 IB 用户,它现在可以在 Xcode 的颜色检查器中使用,它被称为“占位符文本颜色”。这样它应该是向后兼容的。
    【解决方案6】:

    使用上述正确答案中的值

    extension UIColor {
    
        class func greyPlaceholderColor() -> UIColor {
            return UIColor(red: 0.78, green: 0.78, blue: 0.80, alpha: 1.0)
        }
    
    }
    

    【讨论】:

    • 你也可以直接...red: 199/255, green 199/255, blue 205/255... 让它更明显
    • 问题的全部意义在于了解 Apple 实际上是如何以编程方式实现的。显然,查看屏幕截图并猜测最终的平面颜色是微不足道的。
    【解决方案7】:

    根据 Apple 代码,它是 70% 灰色

    open var placeholder: String? // default is nil. string is drawn 70% gray
    

    如果我们将其转换为 rgb:

    UIColor.init(red: 178/255, green: 178/255, blue: 178/255, alpha: 1)
    

    【讨论】:

      【解决方案8】:

      iOS 13 开始,您应该使用UIColor.placeholderText 来确保元素在明暗模式下看起来都不错。 Documentation:

      控件或文本视图中占位符文本的颜色。

      【讨论】:

        【解决方案9】:

        我相信是R:191 G:191 B:198 A:1。见下图。这里标记的控件是UIButton,上面是Title TextColor,其余的是UITextFields,默认占位符颜色。如果 iOS 有所作为,那么这就是 iOS 9。

        【讨论】:

          【解决方案10】:

          #999999 代码与我的表单完美匹配!

          【讨论】:

            【解决方案11】:

            最好动态地从文本字段中获取颜色,以防将来发生更改。默认为 70% 灰色,漂亮接近

            extension UITextField {
              var placeholderColor: UIColor {
                return attributedPlaceholder?.attributes(at: 0, effectiveRange: nil)[.foregroundColor] as? UIColor ?? UIColor(white: 0.7, alpha: 1)
              }
            }
            

            【讨论】:

              【解决方案12】:

              我认为你可以使用 Mac 中的工具来获得颜色。

              【讨论】:

              • 这个工具叫Digital Color Meter
              【解决方案13】:

              将标签字体设置为“浅色”
              mylabel.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:14.0f];
              占位符文本的颜色代码是
              #c2b098

              【讨论】:

                猜你喜欢
                • 2017-05-01
                • 1970-01-01
                • 2010-11-23
                • 1970-01-01
                • 1970-01-01
                • 2013-09-12
                • 2011-09-22
                • 2014-01-31
                • 2014-06-12
                相关资源
                最近更新 更多