J'essaie de changer la police du texte de l'espace réservé dans la barre de recherche dans mon contrôleur d'affichage de recherche. Je regardais quelques exemples et j'ai essayé de les implémenter mais comme ils sont dans Objective-C, je n'ai pas pu en trouver que je pourrais travailler.
Par exemple, j'ai essayé celui-ci:
UITextField *textField = [[searchBar subviews] objectAtIndex:1];
[textField setFont:[UIFont fontWithName:@"Helvetica" size:40]];
Mais je n'ai pas pu dépasser var textField: UITextField = UISearchBar
Des idées?
//SearchBar Text
let textFieldInsideUISearchBar = dashBoardSearchBar.valueForKey("searchField") as? UITextField
textFieldInsideUISearchBar?.textColor = UIColor.whiteColor()
//SearchBar Placeholder
let textFieldInsideUISearchBarLabel = textFieldInsideUISearchBar!.valueForKey("placeholderLabel") as? UILabel
textFieldInsideUISearchBarLabel?.textColor = UIColor.whiteColor()
Il s'agit de la pratique la plus simple pour modifier la police ou toute autre modification similaire dans le champ de texte de la barre de recherche. J'utilise XCode 8.4, Swift 3.x, iOS 10.x. =
extension UISearchBar {
func change(textFont : UIFont?) {
for view : UIView in (self.subviews[0]).subviews {
if let textField = view as? UITextField {
textField.font = textFont
}
}
} }
Le code ci-dessus peut être appelé directement où vous effectuez un IBOutlet de la barre de recherche ...
@IBOutlet weak var searchBar: UISearchBar! {
didSet {
searchBar.change(textFont: GlobalConstants.Font.avenirBook14)
}
}
Définir la taille de la police du texte de l'espace réservé:
UILabel.appearance(whenContainedInInstancesOf: [UISearchBar.self]).font = UIFont.systemFont(ofSize: 12)
définir la taille de la police du texte de recherche:
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).font = UIFont.systemFont(ofSize: 12)
Dans iOS 8, essayez ceci
for subView in searchBar.subviews {
for subsubView in subView.subviews {
if let textField = subsubView as? UITextField {
textField.attributedPlaceholder = NSAttributedString(string:NSLocalizedString("Search", comment:""),
attributes:[NSForegroundColorAttributeName: UIColor.orangeColor()])
}
}
}
Version Swift 3 de la réponse de @ Alvin
let textFieldInsideUISearchBar = searchBar.value(forKey: "searchField") as? UITextField
let placeholderLabel = textFieldInsideUISearchBar?.value(forKey: "placeholderLabel") as? UILabel
placeholderLabel?.font = UIFont.systemFont(ofSize: 12.0)
Cela fonctionne parfaitement pour ios7 -> ios9 en utilisant Swift 2:
if #available(iOS 9.0, *) {
UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]).font = UI.getInstance.tinyFont
} else {
func checkSubview(view:UIView)
for subView in view.subviews {
if subView is UITextField {
let textField = subView as! UITextField
textField.font = UI.getInstance.tinyFont
} else {
checkSubview(subView)
}
}
checkSubview(view)
}
Remplacez simplement UI.getInstance.tinyFont par la police de votre choix.