Ceci est un peu une solution de contournement.
d'abord tout ce que vous devez obtenir le champ de texte de la barre de recherche et centrer l'alignement du texte:
let textFieldOfSearchBar = searchController.searchBar.value(forKey: "searchField") as? UITextField textFieldOfSearchBar?.textAlignment = .center
Après cela, vous devez modifier l'alignement de l'espace réservé. Pour une raison quelconque, cela ne change pas avec l'alignement du champ de texte. Vous devriez le faire en ajoutant un rembourrage à la vue de gauche du champ de texte uniquement lorsque le contrôleur de recherche est actif, donc utiliser ses méthodes de délégué:
func presentSearchController(_ searchController: UISearchController) {
//Is active
let width: CGFloat = 100.0 //Calcualte a suitable width based on search bar width, screen size, etc..
let textfieldOfSearchBar = searchController.searchBar.value(forKey: "searchField") as? UITextField
let paddingView = UIView(x: 0, y: 0, w: width, h: searchController.searchBar.frame.size.height)
textfieldOfSearchBar?.leftView = paddingView
textfieldOfSearchBar?.leftViewMode = .unlessEditing
}
func willDismissSearchController(_ searchController: UISearchController) {
let textfieldOfSearchBar = searchController.searchBar.value(forKey: "searchField") as? UITextField
textfieldOfSearchBar?.leftView = nil
}
Bonne chance
Ouais je veux le mettre au centre aussi. À quel point est-il difficile pour Apple de nous laisser définir searchBar.placeHolder.textAlignment = NSTextAlignmentCenter ?? – coolcool1994