Question Obtenir une hauteur de cadre sans hauteur de barre de navigation ni hauteur de barre d'onglet dans une hiérarchie de vues plus profonde


J'ai un ViewController (B) qui est géré par un PageViewController qui se trouve dans un autre ViewController (A) et l'ouvre modal. J'ai centré le ViewController (B) exactement au milieu de l'écran. Cela fonctionne bien.

Mais quand je pousse le ViewController (A) depuis un NavigationController, le cadre de ViewController (B) est trop grand et s'étend au-dessous de la barre de navigation et du TabBar. Mais je veux qu'il soit centré entre la barre de navigation et la barre de navigation.

Je sais comment je peux obtenir la hauteur de la barre de navigation et de la tabbar pour pouvoir redimensionner ViewController (B):

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

Mais cela ne fonctionne pas profondément dans la hiérarchie Vier dans ViewController (B). self.navigationController et self.tabBarController sont nuls. Alors, comment puis-je obtenir la hauteur de la barre de navigation et de la tabbar plus bas dans la hiérarchie des vues? Ou dois-je simplement passer d'un ViewController à un autre jusqu'à ce que j'atteigne ViewController (B)? Ou existe-t-il un autre moyen plus évident de centrer la vue? Merci.

(J'ai essayé de publier des captures d'écran pour une meilleure compréhension, mais les points de réputation nécessaires me manquent pour publier des images, désolé)


14
2018-05-28 09:59


origine


Réponses:


Utilisez ceci :

let height = UIApplication.sharedApplication().statusBarFrame.height +
self.navigationController!.navigationBar.frame.height

ceci soutient l'état de portrait et de paysage.


30
2018-03-18 13:41



Pour UITabBar, ce code fonctionne:

self.tabBarController?.tabBar.frame.height

4
2018-05-10 15:22



Pour Swift 3

navBarHeight = (self.navigationController?.navigationBar.intrinsicContentSize.height)! 
+ UIApplication.shared.statusBarFrame.height

0
2017-08-11 20:49



La hauteur de la barre d'état de la hauteur de la barre de navigation et la hauteur de la barre de tabulation sont toujours constantes:

  1. Barre de navigation - 44pts
  2. Barre d'état - 20pts
  3. Barre de tabulation - 49pts.

Vous pouvez directement soustraire ces constantes de la hauteur de vue: self.view.frame.size.haut- (44 + 20 + 49)


-16
2018-05-28 10:29