Thursday 24 August 2017

Barre Di Navigazione Edgesforextendedlayout


Fissaggio del iOS 7 barra di navigazione di sovrapposizione Problema C'è stato un problema che è stato affligge gli sviluppatori iOS dal momento che le barre di navigazione abbastanza trasparente è uscito in iOS 7, qualcosa che quando chiedo alle persone perché succede, non hanno assolutamente idea. Vi è una semplice correzione che ognuno ha utilizzato, ma it39s un hack e molti sviluppatori sono stati solo usando senza capire il problema. Metti che nel controller e improvvisamente funziona solo. tipo. Ora la barra di navigazione non ha un punto di essere trasparente, che sconfigge lo scopo. I punti di vista che dovrebbero essere dietro di esso, la nostra visione della radice, e it39s colore di sfondo, aren39t che mostra attraverso più. Onestamente, si potrebbe non importa, questo potrebbe essere abbastanza per voi, ma it39s importante si capisce ancora il problema, quindi continuate a leggere. Se you39ve fatto lo sviluppo del web, questo è sorta di overflow del tipo: nascosto in CSS. Il lavoro, ma it39s ancora una specie di quothackquot. Quindi il problema è che quando you39re view39s fotogrammi è impostata, a differenza di iOS 6, il telaio comprende ancora l'area sotto la barra di navigazione. Quello che si potrebbe non avere capito, è se un UIScrollView. o una sottoclasse come UITableView. è la vista principale per il controller, avrà it39s proprietà contentInset impostato correttamente, consentendo per il telaio di essere sotto la barra di navigazione, ma la vera origine si inizia attingendo è dalla parte inferiore della barra di navigazione, invece. Questo significa che possiamo in modo molto semplice risolvere il problema della barra di navigazione di sovrapposizione, rendendo la nostra radice visualizzare un UIScrollView (o sottoclasse di), invece, pur lasciando il nostro colore di sfondo trasparire. Potete fare la vostra principale visualizzare un UIScrollView definendo il metodo loadview, dove la vostra vista radice, e subviews it39s, dovrebbero essere creati se you39re creare le vostre opinioni a livello di codice. Se si prova questo fuori, you39ll ottenere questo. Si noti il ​​rosso brillante attraverso la barra di navigazione avviso che ci siamo posti che il blu origine view39s di essere nell'angolo in alto a sinistra Tutto è seduto bene e lavorando come Apple ci dovrebbe utilizzare le barre di navigazione trasparenti. Questo ha il vantaggio di dare noi un modo più semplice per espandere il nostro layout di là dello schermo troppo ora che we39re utilizzando una vista di scorrimento, ma si potrebbe non avere bisogno di questo comunque, invece si può semplicemente utilizzarlo come un sostituto per UIView che può avere it39s set contentInset. Ho guardato in haven39t le differenze di memoria per questo, ma la mia aspettativa è che sarebbe estremamente minimale. Se volete saperne di più su RubyMotion, controllare il mio screencast in motioninmotion. tv o il mio prossimo libro RubyMotion per Rails sviluppatori. che è disponibile per il pre-ordine ora, sotto un Pay What You Want modello di pricing, con la parte 1 quasi finito e dovrebbe essere rilasciato presto. RubyMotion Adventures - Il MotionInMotion BlogStarting in iOS7, i controller di vista utilizzare il layout a schermo intero per impostazione predefinita. Allo stesso tempo, si ha un maggiore controllo sul modo in cui espone le sue opinioni, e questo è fatto con quelle proprietà: In sostanza, con questa proprietà si imposta cui lati della vostra vista può essere esteso per coprire l'intero schermo. Immaginate che si preme un UIViewController in un UINavigationController. quando la vista di quel controller della vista è disposto, inizierà dove finisce la barra di navigazione, ma questa proprietà imposterà quali lati della vista (in alto, a sinistra, in basso, a destra) può essere esteso a riempire l'intero schermo. Vediamo con un esempio: Qui non si imposta il valore di edgesForExtendedLayout. quindi il valore di default è preso (UIRectEdgeAll), quindi la vista si estende il suo layout a riempire l'intero schermo. Questo è il risultato: Come si può vedere, lo sfondo rosso si estende dietro la barra di navigazione e la barra di stato. Ora, si sta per impostare il valore di UIRectEdgeNone. così si sta dicendo il controller della vista di non estendere il fine di coprire lo schermo: Questa proprietà viene utilizzata quando la vista è un UIScrollView o simile, come un UITableView. Volete che il vostro tavolo per iniziare a dove finisce la barra di navigazione, perché è solito vedere tutto il contenuto, se non, ma allo stesso tempo che si desidera il vostro tavolo per coprire l'intero schermo durante lo scorrimento. In questo caso, l'impostazione edgesForExtendedLayout None non funzionerà perché il vostro tavolo inizierà a scorrere in cui le estremità della barra di navigazione e non andrà dietro di esso. Qui è dove questa proprietà è utile, se si lascia il controller della vista regolare automaticamente i riquadri (impostazione di questa proprietà su YES, anche il valore di default) si aggiungerà inserto alla parte superiore della tabella, in modo che il tavolo avrà inizio in cui la navigazione bar finisce, ma il rotolo coprirà l'intero schermo. Questo è quando è impostata su NO: e sì (per impostazione predefinita): in entrambi i casi, i rotoli tavolo dietro la barra di navigazione, ma nel secondo caso (SI), si inizierà da sotto la barra di navigazione. Questo valore è solo un'aggiunta alle precedenti. Se la barra di stato è opaco, il punto di vista non sarà estesa per includere la barra di stato troppo, a meno che questo parametro è SI. Quindi, se si estende l'immagine per coprire la barra di navigazione (edgesForExtendedLayout a UIRectEdgeAll) e il parametro è NO (default) è solito copre la barra di stato se il suo opaco. Se qualcosa non è chiaro, scrivere un commento e risposta Ill ad esso. Come iOS sa cosa UIScrollView usare iOS afferra la prima visualizzazione secondaria nelle viewcontrollers vista, quindi quello di indice 0, e se la sua una sottoclasse di UIScrollView applica quindi le proprietà spiegate ad esso. Naturalmente, questo significa che UITableViewController funziona default (poiché il UITableView è la prima vista).

No comments:

Post a Comment