UITextField在内容和失去焦点时的字体大小

时间:2015-12-11 13:19:29

标签: ios swift fonts uitextfield

我有一个 UITextField ,我想为其分配自定义字体和像这样的字体大小

self.txtEmail.font = UIFont("HelveticaNeue-Light", size: 24)

当我启动应用程序时,一切看起来都不错。我的占位符文本获取新字体,如果我单击输入字段并开始键入,则文本具有新字体。但是,当我单击其他位置并且输入字段失去焦点时,字体将重置为默认字体。我发现更奇怪的是,我只是通过在AppDelegate中的应用程序方法中添加此行,为 UILabels 而不是 UITextField 设置了此默认字体。如果我尝试设置 UITextField 的默认字体,则不会发生任何事情。

UILabel.appearance().font = UIFont(name: "HelveticeNeue", size: 18)

所以我的问题是为什么我得到UITextField具有正确字体的行为,直到它获得内容并失去焦点。

1 个答案:

答案 0 :(得分:1)

我对UI元素的外观管理有一个一般性的评论,在UITextField上有一个。 A)外观:

文档说:

  

要自定义类的所有实例的外观,请使用外观来获取类的外观代理。

实际上,这意味着您的更改将应用​​于进入应用程序窗口的UILabel的每个实例(因为iOS应用程序只有1个“公共”窗口)。如果要自定义特定容器类中包含的标签的外观(例如,在UIView中),您应该考虑使用 + appearanceForTraitCollection:whenContainedIn:(不幸的是,自iOS 9.0以来它已被弃用)。更安全的方法是将继承用于您的目的,如下所示:MySpecialLabel -[inherits from and applies custom style attributes within its initializers and/or the awakeFromNib: method]-> UILabel

B)为什么它与UITextField相关?

那是因为UITextField利用UILabels(如_placeholderLabel_promptLabel)。

我希望它能帮助你解决问题。