Riferimenti Edgesforextendedlayout


Oggetto del ciclo di vita: UIViewController Quando si programma in iOS, it8217s inevitabile che you8217ll bisogno di sottoclasse UIViewController. Queste sottoclassi contengono tutta la logica che rende le applicazioni aspetto e si comportano come dovrebbero. It8217s difficile istituire una sottoclasse senza sapere che i metodi sostituiti verrà chiamato e quando. Per porre rimedio a questa potenziale confusione, questo post sarà uno sguardo al ciclo di vita di un UIViewController. Un semplice impostare questo è ciò che il nostro set up assomiglia in Interface Builder. Ci sarà l'esame Scene B. Questo controller è parte di una pila UINavigationController e contiene un'altra scena tramite una vista del contenitore. Come la maggior parte controllori, controllo delle scene B8217s ha riferimenti a oggetti creati in Interface Builder utilizzando le proprietà IBOutlet. Controller A spinge a Controller B Quando Scene Un innesca una segue 8216show8217, questi metodi sostituire sono chiamati controllo delle scene B8217s nel seguente ordine: initWithCoder: quando si utilizza storyboard, il controller viene inizializzato con questo metodo, non con la initWithnibName init o: fascio : metodi. awakeFromNib willMoveToParentViewController: Il controllore che è passato con il presente invito è il UINavigationController. prefersStatusBarHidden preferredStatusBarUpdateAnimation loadview UIViewController funzione 8216s loadview assegna tutti gli oggetti con 8216Referencing Outlets8217 (aka IBOutlets) in Interface Builder per le loro proprietà IBOutlet corrispondenti. Se è necessario accedere a questi IBOutlet oggetti in questa funzione, chiamata Super prima. prepareForSegue: mittente: Questa chiamata ci permette di ispezionare il UIStoryboardEmbedSegue che incorpora la scena più piccolo in scena B8217s vista contenitore. viewDidLoad Questo metodo è di solito dove la maggior parte di un controller8217s istituito accade. Si noti che tutti i nostri IBOutlets sono stati collegati, ma le nostre opinioni non sono ancora stati disposti. extendedLayoutIncludesOpaqueBars edgesForExtendedLayout viewWillAppear: extendedLayoutIncludesOpaqueBars edgesForExtendedLayout updateViewConstraints viewWillLayoutSubviews viewDidLayoutSubviews Animazione L'animazione che le transizioni da Scena A alla scena B corre. Passo 18 non avviene fino a quando l'animazione finisce. viewDidAppear: didMoveToParentViewController: Questa chiamata si conclude il processo iniziato il passaggio 2. Qui riceviamo la stessa istanza di UINavigationController. updateViewConstraints viewWillLayoutSubviews viewDidLayoutSubviews Questo risponde ad alcune domande su quali chiamate vengono prima, oltre ad esporre alcune stranezze interessanti. Diverse chiamate sono apparentemente accadendo più di una volta. La vista scene8217s svolge la sua struttura due volte, una volta prima e una volta dopo la sua animazione. La scena anche interroga il controller ridondante sul layout esteso. Controller B spinge a C Controller Simile al nostro ultimo passaggio, Scena B ora innesca una segue 8216show8217. I controller8217s Metodi sostituiti vengono chiamati nel seguente ordine: prepareForSegue: mittente: Questa chiamata ci permette di ispezionare l'oggetto UIStoryboardShowSegue che segue di scena C. viewWillDisappear: updateViewConstraints Animazione L'animazione che le transizioni da Scene B a Scena C viene eseguito. Fase 5 non avviene fino a quando l'animazione finisce. viewDidDisappear: Nessuna sorpresa qui. We8217re ottenendo soltanto un paio di telefonate e tutti sembrano avere un senso in questo contesto. Controller C Pops a controller B Ora che we8217ve andato di ieri B, we8217re intenzione di tornare. Scene B viene caricato tramite un pop UINavigationController (in opposizione alla spinta nel primo esempio). Otteniamo le seguenti chiamate: prefersStatusBarHidden preferredStatusBarUpdateAnimation extendedLayoutIncludesOpaqueBars edgesForExtendedLayout viewWillAppear: extendedLayoutIncludesOpaqueBars edgesForExtendedLayout updateViewConstraints viewWillLayoutSubviews viewDidLayoutSubviews Animazione L'animazione che passa da Scene C a Scena B corre. Passo 12 non avviene fino a quando l'animazione finisce. viewDidAppear: updateViewConstraints viewWillLayoutSubviews viewDidLayoutSubviews Queste chiamate e la loro ordinazione dovrebbero essere abbastanza familiare dalla prima transizione. Grande assente sono alcune delle una tantum impostato gradini. Il controller è ancora all'interno della UINavigationController quindi non ci sono chiamate riguardanti il ​​controllore genitore. Controller B Pops a Controller A We8217re ora fatto con il nostro controller Scene B. Popping fuori dello stack UINavigationController ci dà le seguenti chiamate: willMoveToParentViewController: L'argomento View Controller nel presente invito è pari a zero. Questo ci dice che scena B viene rimosso dalla gerarchia. viewWillDisappear: updateViewConstraints viewDidDisappear: Animazione L'animazione che le transizioni da Scene B a Scena A corre. Passo 6 non avviene fino a quando l'animazione finisce. didMoveToParentViewController: Questa chiamata si conclude il processo iniziato il passo 1. Qui riceviamo lo stesso argomento nullo. dealloc Simile alla seconda transizione, questa transizione sembra abbastanza straight-forward. Dopo che il controller viene rimosso dalla gerarchia suo metodo dealloc viene chiamato come qualsiasi altro NSObject. Guardate voi stessi il codice che ho usato per eseguire questo test è sul mio github qui. Sentitevi liberi di provare voi stessi, e inserire eventuali altri passi si usa nei propri controller. Messaggio di navigazione Categorie recenti PostsI hanno un progetto che è stato costruito l'anno scorso, e utilizza XIBs, nessun storyboard. I XIBs non usano Auto Layout, ma lo fanno usare un certo ridimensionamento automatico. Ho un problema quando si esegue con iOS7, in cui tutti i punti di vista sono nascosto sotto la barra di stato. Capisco perfettamente questa è una caratteristica nuova con iOS7, in cui questo può essere previsto. Tuttavia, tutte le soluzioni di fissaggio non per fare questo non funzionano. Ho un'immagine nella parte superiore della vista che mostra sempre sotto la barra di stato, e Im non utilizzando nav-bar o qualcosa di simile. Ho provato ad aggiornare le Y-delta nel XIB (non hanno alcun effetto sulla vista), ho provato l'impostazione del edgesForExtendedLayout a UIRectEdgeNone (non fa nulla), e una moltitudine di altre cose. Ogni volta, la barra di stato mostra con la vista nascosto sotto di essa, non importa quello che faccio. cioè a meno che mi muovo manualmente verso il basso la vista nel XIB per lasciare spazio per la barra di stato (ma che il lavoro doesnt soluzione perché aspetto esterno non proprio nel iOS6, ovviamente). Che cosa strana è che, anche quando provo una riga di codice per incidere in una vista-shift, doesnt lavoro (come il seguente): Non che vorrei andare con quel tipo di soluzione, ma il suo solo strano che non ha funzionato (il unica volta che ho di solito vedo che non funziona è che se layout automatico è a posto, che la sua non in questo caso). Si tratta di un requisito di progettazione che la barra di stato mostra, e Im appena perplesso sul perché smusso impostare la visualizzazione di essere sotto la barra di stato per iOS7. Ho letto ogni singolo post Stack Overflow in materia, così come Mele transitionguides. Ancora una volta, per ribadire, capisco perfettamente come dovrebbe funzionare e quale sia la soluzione prevista dovrebbe essere a questo, ma niente di tutto questo sembra funzionare per questo particolare progetto. Sono un esperto dev iOS, ma questo progetto è stato costruito da un altro gruppo, in modo da non so se c'è qualcosa di nascosto da qualche parte nel file XIB, plist, o un codice che potrebbe essere sbaragliando le impostazioni di cui sopra. Per favore fatemi sapere se c'è qualcos'altro che può essere guardato su questo, o più informazioni posso fornire. Grazie in anticipo chiesto 24 settembre 13 a 19:21 di Apple stanno spingendo l'uso layout automatico per raggiungere questo obiettivo. È necessario impostare un vincolo alla guida superiore Layout dal visualizzazione secondaria superiore nella vista. Leggi questo documento per gli esempi: Per fare questo senza XIBs, youll necessario aggiungere il vincolo programatically. Mele documenti danno un buon esempio di questo, che Ive riassunti di seguito. Dare che il topLayoutGuide è una proprietà su un controller di vista, è sufficiente utilizzare nel vostro dizionario di attacchi variabili. Poi si imposta il vincolo come normale:

Comments

Popular posts from this blog

Bog Impone Nuovi Forex Regole

Forex Guide Strategiche 4 Ore

Estrategia Soportes Y Resistencias Forex Trading