如何以编程方式更改UISearchBar或UITableViewHeader的UIFont?

时间:2016-05-01 18:34:35

标签: ios swift uitableview uiview uisearchbar

我有一个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

            }

        }

4 个答案:

答案 0 :(得分:1)

来自this question

你需要遍历它的子视图才能找到UITextField(不能通过属性访问)

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

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

答案 1 :(得分:1)

试试这个:

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

答案 2 :(得分:1)

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

中为占位符和文本设置自定义字体

答案 3 :(得分:-1)

if #available(iOS 9.0, *) {
    UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).textColor = UIColor.blueColor()
    UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).font = UIFont.systemFontOfSize(17)
}