Avec iOS 11, Apple a redessiné la barre UISearchBar en arrondissant les angles et en augmentant la hauteur. L'ajout d'une UISearchBar à la barre de navigation est assez simple : il suffit de la définir comme titleView de l'élément de navigation à l'aide de la commande navigationItem.titleView = searchBar
.
Cependant, dans iOS 11, cela ne semble plus fonctionner comme prévu. Jetez un coup d'œil aux écrans où nous comparons la même configuration sous iOS 10 et iOS 11.
Vous pouvez clairement voir que la SearchBar augmente la taille de la NavigationBar mais que les boutons de la barre ne sont pas alignés correctement. De plus, la barre de recherche n'utilise plus l'espace disponible sur la gauche.
Placez la barre de recherche dans une vue enveloppante pour obtenir le bouton d'annulation sur l'iPad, comme décrit ici. Le bouton d'annulation n'apparaît pas dans la barre de recherche UISearchBar. ne semble pas non plus fonctionner puisque la barre de recherche n'est alors plus visible du tout.
Si quelqu'un a des problèmes similaires ou sait déjà comment réparer/améliorer ce problème, je lui en serai très reconnaissant.
Il a été construit en utilisant Xcode 9 Beta 4. Peut-être que les futures versions corrigeront ce problème.
UPDATE :
Comme ce problème n'est pas résolu, nous avons décidé d'utiliser la solution suivante. Nous avons ajouté un nouvel élément UIBarButtonItem à la barre de navigation qui présente ensuite un nouveau ViewController dans lequel nous avons uniquement placé une barre de recherche et rien d'autre dans la barre de navigation, ce qui semble fonctionner. L'utilisation de la réponse sélectionnée est peut-être la meilleure solution puisque Apple, avec iOS 11, veut que nous utilisions ce nouveau design même s'il ne nous donne pas le résultat que nous voulions à l'origine. Une autre façon de résoudre ce problème pourrait être une barre de recherche personnalisée, mais c'est un autre sujet.
0 votes
J'ai passé quelques heures à essayer de résoudre le même type de problème. Je vous invite à consulter ma réponse ici : stackoverflow.com/a/53264329/3231194 :) J'ai posté ce message en tant que réponse, afin qu'il puisse être vu facilement. Merci !