UITextField 中占位符文本的默认颜色是啥?
Posted
技术标签:
【中文标题】UITextField 中占位符文本的默认颜色是啥?【英文标题】: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,这完全是错误的。这些值就在代码中,并在现在选择的答案中给出。软件非常精确:)
【参考方案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】:
您可以通过检查 attributedPlaceholder
和 UITextField
来获得此颜色。
默认好像是: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
【讨论】:
以上是关于UITextField 中占位符文本的默认颜色是啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用用户属性更改 UITextField 的占位符文本颜色?
如何调整 UITextField 占位符文本以适合 UITextField 宽度?