【问题标题】:How can I programmatically change UIFont of UISearchBar or UITableViewHeader?如何以编程方式更改 UISearchBar 或 UITableViewHeader 的 UIFont?
【发布时间】:2016-08-26 12:12:04
【问题描述】:

我有一个UITableView,我以编程方式将UISearchController 添加到其中作为标题。由于我以编程方式添加它,因此无法从情节提要中更改字体。我需要更改 UISearchBar 字体以匹配应用程序其余部分的字体。我需要更改UISearchBar 或整个tableViewHeader 的字体

我看到在 Objective-c 中有一个类似的问题,但是我正在 Swift 中开发我的应用程序,我尝试将另一个问题的答案转换为以下代码,但是它仍然无法工作:

let lightFont = UIFont(name: "GothamRounded-Light", size: 15)

        for subview in searchController.searchBar.subviews {
            if subview is UITextField{

                (subview as! UITextField).font = lightFont

            }

        }

【问题讨论】:

    标签: ios swift uitableview uiview uisearchbar


    【解决方案1】:

    来自this question

    您需要遍历它的子视图以找到 UITextField(不可通过属性访问)

    for subview in search.subviews {
       if subview is UITextField {
           (subview as! UITextField).font = UIFont(name: "Arial", size: 24.0)
       }
    }
    

    然后你可以设置它的字体。

    【讨论】:

    • 谢谢,看起来不错,但是当我运行它时,它的字体并没有改变。我用我正在使用的代码更新了我的问题!
    • 我认为问题在于它没有找到 UITextField 的子视图。你知道为什么会这样吗?
    【解决方案2】:

    试试这个:

    let textFieldInSearchBar = searchBar.value(forKey: "searchField") as? UITextField
    textFieldInSearchBar?.font = UIFont.systemFont(ofSize: 10)
    

    【讨论】:

      【解决方案3】:

      viewDidLoad()

      中添加以下代码
      let textFieldInsideUISearchBar = searchBar.value(forKey: "searchField") as? UITextField
      
      let placeholderLabel = textFieldInsideUISearchBar?.value(forKey: "placeholderLabel") as? UILabel
      
      placeholderLabel?.font = UIFont(name: "Avenir Next", size: 13.0) //this will set custom font to placeholder font
      
      textFieldInsideUISearchBar?.font = placeholderLabel?.font //this will set custom font to text font
      

      这将为UISearchBar 中的占位符和文本设置自定义字体。

      【讨论】:

        【解决方案4】:
        if #available(iOS 9.0, *) {
            UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).textColor = UIColor.blueColor()
            UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).font = UIFont.systemFontOfSize(17)
        }
        

        【讨论】:

        • 您能解释一下这里发生了什么,并说明您为什么认为这是一个很好的答案吗?
        猜你喜欢
        • 2013-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-06
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多