Je sais que la présence du contrôleur more view (barre de navigation) fait baisser l'UIView de sa hauteur. Je sais aussi que cette hauteur = 44px. J'ai également découvert que cette poussée vers le bas maintient le [self.view].frame.origin.y = 0
.
Alors, comment puis-je déterminer la hauteur de cette barre de navigation, autre que de simplement la définir sur une constante?
Ou, version plus courte, comment puis-je déterminer que mon UIView s'affiche avec la barre de navigation en haut?
L'ampoule a commencé à s'allumer. Malheureusement, je n'ai pas découvert de manière uniforme de corriger le problème, comme décrit ci-dessous.
Je crois que tout mon problème est centré sur mes masques de redimensionnement automatique. Et la raison pour laquelle j'ai conclu que les mêmes symptômes existent, avec ou sans UIWebView. Et ce symptôme est que tout est pêche pour Portrait. Pour Landscape, l'UIButton le plus bas apparaît derrière la TabBar.
Par exemple, sur un UIView, j'ai, de haut en bas:
UIView - les deux ressorts sont réglés (cas par défaut) et pas d'entretoises
UIScrollView - Si je place les deux ressorts et efface tout le reste (comme l'UIView), alors l'UIButton empiète sur l'objet immédiatement au-dessus. Si je nettoie tout, alors UIButton est OK, mais le truc tout en haut se cache derrière le StatusBar.
UILabel et UIImage suivant verticalement - ensemble de jambes de force supérieur, flexible partout ailleurs
Juste pour compléter l'image pour les quelques-uns qui ont une UIWebView:
UIWebView - Struts: haut, gauche, droite Ressorts: les deux
UIButton - rien de fixe, c'est-à-dire flexible partout
Bien que mon ampoule soit faible, il semble y avoir de l'espoir.
Veuillez rester avec moi car j'avais besoin de plus d'espace que celui prévu pour une courte réponse.
Merci d'essayer de comprendre ce que je pêche vraiment ... alors voilà.
1) Chaque UIViewController (une application TabBar) a une UIImage, du texte et tout ce qui se trouve en haut. Un autre dénominateur commun est un UIButton en bas. Sur certains UIViewControllers, j'ai un UIWebView au-dessus de l'UIButton.
Donc, UIImage, texte, etc. UIWebView (sur CERTAINS) UIButton
Tout ce qui précède est entouré d'un UIScrollView.
2) Pour ceux qui ont une UIWebView, son autoresizingMask ressemble à:
—
|
—
^
|
|
| - | ← ---- → | - | | | V Le masque de l'UIButton n'a rien de défini, c'est-à-dire flexible partout
Dans mon -viewDidLoad, j'appelle mon -repositionSubViews dans lequel je fais ce qui suit:
S'il n'y a pas d'UIWebView, je ne fais rien d'autre que de centrer l'UIButton que j'ai placé avec IB.
Si j'ai un UIWebView, alors je détermine son * contenu * Hauteur et définissez son cadre pour englober tout le contenu.
UIScrollView *scrollViewInsideWebView = [[webView_ subviews] lastObject];
webViewContentHeight = scrollViewInsideWebView.contentSize.height;
[webView_ setFrame:CGRectMake(webViewOriginX, webViewOriginY,
sameWholeViewScrollerWidth, webViewContentHeight)]
Une fois que je fais cela, je pousse par programme l'UIButton vers le bas afin qu'il se retrouve placé sous UIWebView.
Tout fonctionne, jusqu'à ce que je le fasse pivoter de Portrait en Paysage.
J'appelle mon -repositionSubViews dans mon -didRotateFromInterfaceOrientation.
Pourquoi la hauteur du contenu de mon UIWebView ne change-t-elle pas avec la rotation?.
De Portrait à Paysage, la largeur du contenu doit s'étendre et la hauteur du contenu doit être réduite. Il fait visuellement comme il se doit, mais pas selon mon NSLog.
Quoi qu'il en soit, avec ou sans UIWebView, le bouton dont j'ai parlé se déplace sous la TabBar en mode Paysage mais il ne défilera pas pour être vu. Je le vois derrière le TabBar quand je fais défiler "vigoureusement", mais ensuite il "retombe" derrière le TabBar.
En bout de ligne, c'est la raison pour laquelle j'ai posé des questions sur la hauteur de la TabBar et de la NavigationBar car la TabBar se plante au bas de l'UIView et la NavigationBar pousse l'UIView vers le bas.
Maintenant, je vais ajouter un commentaire ou deux ici parce qu'ils n'auraient pas eu de sens plus tôt.
Sans UIWebView, je laisse tout tel quel comme le voit IB.
Avec un UIWebView, j'augmente le frame.height de l'UIWebView à son contentHeight et ajuste également vers le haut la hauteur de l'UIScrollView environnant qui entoure toutes les sous-vues.
Bien, tu l'as maintenant.