【问题标题】:Change UITextField, UILabel, UITextView, UIButton font dynamically based on text or title根据文本或标题动态更改 UITextField、UILabel、UITextView、UIButton 字体
【发布时间】: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()

标签: ios swift xcode


【解决方案1】:

您是否使用 firebase,然后在远程配置中指定字体。获取这些字体并创建一些具有静态属性字体的实用程序类。例如

class Utils{
var font: UIFont = UIFont("fontFetched") ?? default font
}

喜欢: label.text.font = 字体

并在您实现字段和按钮的任何地方使用它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 2012-03-24
    • 2017-10-15
    • 2014-04-20
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多