Swift: Tableview défile sous la barre de navigation mais sur la barre d'état?

J'ai caché l'ombre de la barre de navigation en utilisant l'astuce suivante:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) self.navigationController?.navigationBar.shadowImage = UIImage() 

J'ai aussi l'set suivant:

  self.extendedLayoutIncludesOpaqueBars = true self.automaticallyAdjustsScrollViewInsets = true self.tabBarController?.tabBar.isHidden = true 

Tout a l'air bien sur ma page, sauf que lorsque je fais défiler ma tableView il passe sous la barre de navigation comme prévu, mais au-dessus de la barre d'état:

Voir le tableauVoir défilement au-dessus de la barre d'état?

Comment puis-je m'assurer que le tableView défile sous la barre de navigation et la barre d'état?

Cela placera l'UITableView sous la barre d'état.

 self.edgesForExtendedLayout=UIRectEdgeNone; self.extendedLayoutIncludesOpaqueBars=NO; self.automaticallyAdjustsScrollViewInsets=NO; 

Vous avez caché l'arrière-plan par défaut de la barre de navigation, c'est donc à prévoir. Cela signifie que vous créez vous-même le fond vert dans la barre de navigation. Vous devez l'étendre manuellement pour couvrir à la fois la barre d'état et la barre de navigation, ce qui correspond à l'arrière-plan par défaut.

Ou utilisez une image verte au lieu d'une image transparente.

Vous pouvez essayer la vue table comme sous UIEdgeInsetMake et aussi sa vue déroulante

 tableView.contentInset = UIEdgeInsetsMake(20.0, 0.0, 0.0, 0.0) tableView.scrollIndicatorInsets = UIEdgeInsetsMake(20.0, 0.0, 0.0, 0.0)