GOOGLE ADS

vendredi 22 avril 2022

Espace supplémentaire au-dessus de UITableView de UISearchController

J'ai mis en place un UISearchControllercomme ceci:

 searchResultsController = SearchResultsController()
searchController = UISearchController(searchResultsController: searchResultsController)
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = true
searchController.searchBar.searchBarStyle =.minimal
searchController.delegate = self
definesPresentationContext = true
navigationItem.titleView = searchController.searchBar

SearchResultsControllerest juste un contrôleur de vue avec UITableViewpour afficher les résultats de la recherche.

Lorsque l'appareil est en mode portrait, lancez la recherche en mode portrait, il y a un espace supplémentaire en haut de la vue du tableau (l'en-tête RESULT est le début de la vue du tableau)

Appareil en mode portrait - Lancer la recherche en mode portrait

Ensuite, si je tourne en mode paysage, l'espace a disparu:

Appareil en mode paysage - Lancer la recherche en mode portrait

Lorsque l'appareil est en mode paysage et que je lance la recherche, la vue du tableau est coupée :

Appareil en paysage - Lancer la recherche en paysage

Ensuite, si je tourne en mode portrait, la vue du tableau s'adapte parfaitement :

Appareil en mode portrait - Lancer la recherche en mode paysage

La hauteur de l'espace supplémentaire est exactement la même que la hauteur de la barre d'état. Je me demande donc s'il y a quelque chose lié à la barre d'état ici.

Cela ne s'est pas produit si j'attribue la barre de recherche en tant que vue de table tableHeaderView. Cela ne se produit que lorsque la barre de recherche est dans le titre de navigation. Quelqu'un sait pourquoi?


Solution du problème

Apparemment automaticallyAdjustsScrollViewInsets, il devient obsolète.

'automaticallyAdjustsScrollViewInsets' est obsolète dans iOS 11.0 : utilisez plutôt le contentInsetAdjustmentBehavior de UIScrollView

Je suggérerais donc de faire quelque chose comme:

searchResultsController.tableView.contentInsetAdjustmentBehavior =.never

Cela a fonctionné comme un charme pour moi. Quelques documentations utiles:

contentInsetAdjustmentBehavior

UIScrollViewContentInsetAdjustmentBehavior

Aucun commentaire:

Enregistrer un commentaire

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique ?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...