【发布时间】:2019-08-06 07:26:26
【问题描述】:
我需要根据文本或标题的内容更改应用程序中所有 UILables、UITextViews、UITextFields、UIButtons(标题)的字体。我怎样才能在全球范围内做到这一点?。
我确实尝试为每个扩展创建一个扩展并在 layoutSubviews() 中进行更改,但这仅适用于 UILabel。
extension UILabel {
override open func layoutSubviews() {
super.layoutSubviews()
let text = self.text ?? ""
var fontName = THEME_FONT_NAME
if (!text.isAlphanumeric) {
self.font = UIFont.systemFont(ofSize: self.font.pointSize, weight: fontWeight)
return
}
self.font = UIFont(name: fontName, size: self.font.pointSize)
}}
【问题讨论】:
-
提供您的试用码
-
那么,你面临什么障碍,就像 textfield.text == "your text expected" { //set textfield font here } 你这样做会遇到什么问题
-
stackoverflow.com/questions/32570745/… 用于标签更改,可能适用于 uitexrtview,uitextfield 也.. stackoverflow.com/questions/38989264/… 用于按钮
-
@Vollan 我不想创建子类。由于我们在应用程序中已经有这么多标签,因此很难为所有标签添加子类。无论如何我们可以在扩展中做到这一点
-
在这种情况下,您必须在 uilabel、textview、tefxtfield 等的某个阶段设置一个侦听器,然后设置一个侦听器 stackoverflow.com/a/14327575/4757272,因此对于每个场景,您都必须
theView.setupListener()