So che la presenza del controller di visualizzazione più (barra di navigazione) spinge verso il basso l'UIView in base all'altezza. So anche che questa altezza = 44 px. Ho anche scoperto che questo push down mantiene lo [self.view].frame.origin.y = 0
.Altezza della barra di navigazione a livello di programmazione
Quindi, come determinare l'altezza di questa barra di spostamento, oltre a impostarla su una costante?
Oppure, versione più breve, come si determina che il mio UIView viene visualizzato con la barra di navigazione in alto?
La lampadina ha iniziato ad accendersi. Sfortunatamente, non ho scoperto un modo uniforme per correggere il problema, come descritto di seguito.
Credo che tutto il mio problema si concentri sulle mie funzioni di autoresizing. E il motivo per cui ho concluso che esistono gli stessi sintomi, con o senza UIWebView. E quel sintomo è che tutto è peachy per Portrait. Per Paesaggio, l'UIButton più in basso si apre dietro il TabBar.
Ad esempio, su un UIView, ho, dall'alto verso il basso:
UIView - entrambe le molle fissate (predefinita) e non puntoni
UIScrollView - Se fisso le due molle, e chiaro tutto il resto (come l'UIView), quindi l'UIButton si intromette sull'oggetto immediatamente sopra di esso. Se cancello tutto, allora UIButton è OK, ma il materiale nella parte superiore si nasconde dietro lo StatusBar. Impostando solo il puntone superiore, l'UIButton si apre dietro la Barra delle Tabulazioni.
UILabel e UIImage prossimo verticale - puntone set top, flessibile ovunque
Giusto per completare il quadro per i pochi che hanno un'UIWebView:
UIWebView - Struts: alto, a sinistra, a destra Springs: entrambi
UIButton - niente di set, vale a dire, flessibile ovunque
Anche se la mia lampadina è fioca, sembra che vi sia speranza.
Si prega di sopportare me perché avevo bisogno di più spazio di quello previsto per un breve commento di risposta.
Grazie per aver cercato di capire cosa sto veramente pescando ... quindi ecco qui.
1) Ogni UIViewController (un'app TabBar) ha un UIImage, del testo e quant'altro in alto. Un altro comune denominatore è un UIButton in basso. Su alcuni UIViewController ho una UIWebView sopra UIButton.
Quindi, UIImage, testo, ecc UIWebView (su alcuni) UIButton
circonda tutto quanto sopra è un UIScrollView.
2) Per coloro che hanno un UIWebView, la sua autoresizingMask assomiglia:
—
|
—
^
|
|
| - | ← ---- → | - | | | V maschera del UIButton ha fissato, vale a dire, flessibile ovunque
Nel mio -viewDidLoad nulla, chiamo i miei -repositionSubViews entro il quale ho effettuare le seguenti operazioni:
Se non c'è UIWebView, non faccio niente, tranne il centro l'UIButton che ho inserito con IB.
Se si dispone di un UIWebView, quindi determinare il suo * contenuto * Altezza e impostare la sua cornice per racchiudere l'intero contenuto.
UIScrollView *scrollViewInsideWebView = [[webView_ subviews] lastObject];
webViewContentHeight = scrollViewInsideWebView.contentSize.height;
[webView_ setFrame:CGRectMake(webViewOriginX, webViewOriginY,
sameWholeViewScrollerWidth, webViewContentHeight)]
Una volta fatto questo, poi spingere la programmazione UIButton in modo che finisce posto sotto UIWebView.
Tutto funziona, finché non lo ruoto da Verticale a Orizzontale.
Io chiamo my -repositionSubViews all'interno del mio -didRotateFromInterfaceOrientation.
Perché l'altezza del contenuto della mia UIWebView non cambia con la rotazione ?.
Da Verticale a Orizzontale, la larghezza del contenuto dovrebbe espandersi e l'altezza del contenuto dovrebbe ridursi. Lo fa visivamente come dovrebbe, ma non secondo il mio NSLog.
In ogni caso, con o senza UIWebView, il pulsante di cui ho parlato si sposta sotto TabBar in modalità Orizzontale ma non si scorre per essere visto. Lo vedo dietro al TabBar quando faccio scorrere "vigorosamente", ma poi "cade indietro" dietro il TabBar.
Bottom line, quest'ultimo è il motivo per cui ho chiesto l'altezza del TabBar e del NavigationBar perché il TabBar si posiziona nella parte inferiore di UIView e il NavigationBar spinge l'UIView in basso.
Ora, ho intenzione di aggiungere un commento o due qui perché non avrebbero avuto senso prima.
Senza UIWebView, lascio tutto come è visto da IB.
Con UIWebView, aumenta il frame di UIWebView.altezza del suo contenutoAltezza e regola anche l'altezza del UIScrollView circostante che circonda tutte le viste secondarie.
Bene, ce l'hai.
Impostare il puntone superiore e impostare le due molle di UIWebView - problema risolto e grazie grappoli. In effetti, il mio unico problema rimanente è progettare quei grafici maledetti @ 2X, ecc. Uso GraphicConverter in modo molto semplice e funziona molto bene per la progettazione di pagine Web. Ma tutta questa roba da 30px, 57px - per me, sto andando in un territorio inesplorato, almeno. –