Obtenir la hauteur du cadre sans la hauteur de la barre de navigation et la hauteur de la barre d'onglets dans la hiérarchie de vue plus profonde

J'ai un ViewController (B) qui est géré par un PageViewController qui est à l'intérieur d'un autre ViewController (A) et de l'ouvrir modal. J'ai centré le ViewController (B) exactement au milieu de l'écran. Cela fonctionne très bien.

Mais quand j'appuie sur le ViewController (A) à partir d'un NavigationController le cadre de ViewController (B) est grand et s'étend au-dessous de la NavigationBar et la TabBar. Mais je veux qu'il soit centré entre les NavigationBar et la TabBar.

Je sais comment je peux obtenir la hauteur de la barre de navigation et la tabbar afin que je puisse redimensionner ViewController (B):

var topBar = self.navigationController?.navigationBar.frame.height
var bottomBar = self.tabBarController?.tabBar.frame.height

Mais cela ne fonctionne pas en profondeur dans la vier hiérarchie dans ViewController (B). auto.navigationController et l'auto.tabBarController sont nuls. Alors, comment puis-je obtenir la hauteur de la barre de navigation et tabbar au plus profond de l'avis de la hiérarchie? Ou dois-je passer de l'un ViewController à l'autre jusqu'à ce que je atteindre ViewController (B)? Ou est-il une autre manière plus nette centre de la vue? Merci.

(J'ai essayé de poster des captures d'écran pour mieux comprendre, mais je m'ennuie le besoin de points de réputation pour poster des images, désolé)

source d'informationauteur Darko D.