Par programmation obtenir la hauteur de la barre de navigation

Je sais que la présence de la plus-vue-contrôleur (barre de navigation) pousse le UIView par sa hauteur. Je sais aussi que ce height = 44px. J'ai aussi découvert que cette poussée vers le bas maintient la [self.view].frame.origin.y = 0.

Alors, comment puis-je déterminer la hauteur de cette barre de navigation, autres que les valeurs de la constante?

Ou, version plus courte, comment puis-je savoir que mon UIView montre avec la barre de navigation en haut?


L'ampoule a commencé à venir sur. Malheureusement, je n'ai pas constaté d'une manière uniforme pour corriger le problème, comme décrit ci-dessous.

Je crois que mon problème centres sur mon autoresizingMasks. Et la raison pour laquelle j'ai conclu que est les mêmes symptômes existent, avec ou sans une UIWebView. Et que le symptôme, c'est que tout est peachy pour le Portrait. Pour le Paysage, le fond le plus UIButton pop vers le bas, derrière la TabBar.

Par exemple, sur une UIView, j'ai, de haut en bas:

UIView – les deux sources set (cas par défaut) et pas de jambes de suspension

UIScrollView - Si j'ai mis les deux ressorts, et effacer tout le reste (comme le UIView), puis le UIButton empiète sur l'objet immédiatement au-dessus d'elle. Si j'ai effacer tout, puis UIButton est OK, mais le truc tout en haut se cache derrière la Barre de Réglage uniquement le haut de jambe de force, le UIButton pop vers le bas, derrière la Barre d'Onglet.

UILabel et UIImage prochaine verticalement au – dessus de jambe de jeu, flexible partout ailleurs

Juste pour compléter le tableau, pour les quelques-uns qui ont une UIWebView:

UIWebView - Struts: en haut, à gauche, à droite Ressorts: les deux

UIButton – rien mis, c'est à dire, souple partout

Bien que mon ampoule est faible, il semble y avoir de l'espoir.


S'il vous plaît garder avec moi parce que j'avais besoin de plus d'espace que celui qui est prévu pour un court commentaire de réponse.

Merci d'essayer de comprendre ce que je suis vraiment la pêche pour ... donc voilà.

1) Chaque UIViewController (un TabBar app) a une UIImage, du texte et de quoi que ce soit sur le dessus. Un autre dénominateur commun est un UIButton sur le fond. Sur certains UIViewControllers j'ai une UIWebView au-dessus de la UIButton.

Donc, UIImage, texte, etc. UIWebView (sur CERTAINS) UIButton

Entourant tous les ci-dessus est un UIScrollView.

2) Pour ceux qui ont une UIWebView, son autoresizingMask ressemble:

   
   |
   

   ^
   |
   |

|—| ←----→ |—|
|
|
V
Le UIButton du masque n'a rien réglé, c'est à dire, souple partout

Au sein de mon -viewDidLoad, je l'appelle mon -repositionSubViews à l'intérieur de laquelle je ne les suivants:

Si il n'y a pas de UIWebView, je n'ai rien, sauf le centre de la UIButton que j'ai placé dans l'IB.

Si j'ai une UIWebView, puis-je déterminer sa *contenu*la Hauteur et de définir son cadre pour encadrer l'ensemble du contenu.

UIScrollView *scrollViewInsideWebView = [[webView_ subviews] lastObject];
webViewContentHeight = scrollViewInsideWebView.contentSize.height;
[webView_ setFrame:CGRectMake(webViewOriginX, webViewOriginY,
                          sameWholeViewScrollerWidth, webViewContentHeight)]

Une fois que j'ai fais, puis je par programme pousser la UIButton vers le bas de sorte qu'il se termine placé au-dessous de la UIWebView.

Tout fonctionne, jusqu'à ce que j'effectue une rotation de Portrait à Paysage.

J'appelle ma -repositionSubViews au sein de mon -didRotateFromInterfaceOrientation.

Pourquoi le contenu de la hauteur de mon UIWebView change pas avec la rotation?.

De Portrait à Paysage, le contenu de la largeur doivent développer et le contenu de la hauteur devrait se réduire. Il ne visuellement comme il se doit, mais non pas selon mon NSLog.

De toute façon, avec ou sans une UIWebView, le bouton que j'ai parlé se déplace au-dessous de la TabBar quand en mode Paysage, mais il ne sera pas faites défiler vers le haut pour être vu. Je le vois derrière la TabBar quand je scroll "vigoureusement", mais il "retombe" derrière la TabBar.

Bas de la ligne, cette dernière est la raison pour laquelle j'ai demandé à propos de la hauteur de la TabBar et la NavigationBar parce que la TabBar plantes lui-même au bas de la UIView et la NavigationBar pousse le UIView vers le bas.

Maintenant, je vais ajouter un commentaire ou deux ici, parce qu'ils n'aurait pas eu de sens plus tôt.

Sans UIWebView, je laisse tout comme c'est vu par l'IB.

Avec une UIWebView, je l'augmentation de la UIWebView cadre.hauteur contentHeight et aussi ajuster à la hausse la hauteur de l'entourage UIScrollView qui entoure tous les sous-vues.

Bien là vous l'avez.

InformationsquelleAutor | 2011-09-05