Friday 17 November 2017

Edgesforextendedlayout Barra Delle Schede Guadalajara


La causa principale di questo problema è che automaticallyAdjustsScrollViewInsets è efficace solo sulla prima vista di scorrimento nelle VC vista Gerarchia. Non è documentato da Apple, ma è l'unico modo in cui il VC rileverà la vista di scorrimento che necessitano di essere modificati a meno che non state usando un UITableViewController. Quindi, al fine di risolvere il problema senza regolare manualmente i riquadri, fare questo: Assicurarsi Regolare Scroll View Insets sia selezionata. Assicurarsi che il tableView è la prima visualizzazione secondaria nella gerarchia della vista. (Spostare verso l'alto sopra tutti gli altri elementi) ha risposto 8 settembre 15 alla 11:31 UIViewController ha due nuove proprietà per assistervi. topLayoutGuide e bottomLayoutGuide. Tornano l'altezza dei controllori vista padre controlli è necessario evitare. In questo caso, bottomLayoutGuide restituirà l'offset della barra delle schede. Il controller visualizzazione personalizzata è probabilmente sostituire un metodo e non invocare implementazione super-s dove questo sarebbe stato fatto per voi. Sono indovinando che si sta installando vincoli AutoLayout o impostare manualmente una cornice vista per riempire la vista. Hai solo bisogno di includere il valore di lunghezza bottomLayoutGuide per il calcolo layout. Se supporto di rotazione, è necessario aggiornare il valore in willAnimateRotationToInterfaceOrientation: la durata. rispose 8 ottobre 13 ad 15:28 You39re utilizzando viewWillAppear in modo non corretto per cominciare qui. It39s un errore comune. Questo dovrebbe andare in viewWillLoad. viewWillAppear spara ogni volta che la vista appare Si don39t vuole codice della vista di impostazione in quanto metodo di sparare ogni volta che viene visualizzata la vista. Solo codice dinamico che i cambiamenti dovrebbero andare in viewWillAppear, come i dati that39s sempre aggiornato in tempo reale. È possibile chiamare vista logica se it39s rilevanti per l'aggiornamento dei dati, come ad esempio un aggiornamento vista. Ma vista l'installazione non dovrebbe mai andare in viewWillAppear. ndash smileBot 24 febbraio 14 a 21:23 cocoanut: Nella mia esperienza, i fotogrammi di alcuni punti di vista haven39t sempre stato impostato in viewDidLoad, ma si trovano in viewWillAppear, in modo da calcolare geometrie in viewDidLoad risultati in valori errati se hanno bisogno di basarsi su viste nel pennino. ndash Jeff 14 lug 14 alle 5: 44in mia iOS, il mio finestre RootViewController è un controller barra delle schede con la gerarchia in questo modo: quando l'utente tocca un certo fila su FirstContentController. un'istanza di SecondController sarà spinto sul suo controller di navigazione. set SecondContentController hidesBottomBarWhenPushed su YES nel suo metodo init e imposta self. navigationController. toolbarHidden NO in viewWillAppear. In iOS 6, l'utente dovrebbe toccare la riga in FirstController e SecondController otterrebbe spinto sul controller di navigazione. Perché è hidesBottomBarWhenPushed impostato, sarebbe nascondere la barra delle schede e, per il momento l'animazione di transizione era completa, SecondController sarebbe sullo schermo con la sua barra degli strumenti visibile. Tuttavia, quando si verifica questo sotto iOS 7, il comportamento hidesBottomBarWhenPushed s sembra essere cambiato. Quello che vedo ora è: la barra delle schede nasconde, come previsto appare nella barra degli strumenti, come ci si aspetta un gap di spazio inutilizzabile esattamente 49 pixel di altezza (l'altezza della barra delle schede) appare tra la barra degli strumenti e visualizzare il contenuto Il divario è completamente inutilizzabile - doesnt rispondere alle tocchi e se ho impostato clipsToBounds YES sulla schermata principale, nulla attira lì. Dopo un sacco di debug e l'esame gerarchie visualizzazione secondaria, sembra che il meccanismo ridimensionamento automatico IOS ridimensiona la vista controller di vista ad una altezza di 411 (su iPhone 5). Dovrebbe essere 460 per raggiungere tutta la strada fino alla barra degli strumenti, ma il sistema di layout sembra essere compreso un fantasma 49 pixel di altezza barra delle schede. Questo problema si verifica solo se il controller di vista dispone di un controller barra delle schede come uno se i suoi contenitori padre. Su iOS 7, come posso avere la barra delle schede scomparire e una barra degli strumenti senza scivolare in posizione quando un nuovo controller è spinto, e hanno ancora la vista occupano tutto lo spazio tra lo strumento di navigazione e la barra degli strumenti Dopo ulteriori indagini, questo accade solo se SecondControllers edgesForExtendedLayout è impostato su UIRectEdgeNone. Tuttavia, a meno che non ho impostato la proprietà di UIRectEdgeNone. il telaio di vista è troppo lungo e si estende sotto la barra degli strumenti, dove cant essere visto o interagito con. Non vi piacerà questa risposta Questa non è la risposta che si desidera, ma dopo qualche ricerca su nascondere la barra delle schede in iOS7, la mia conclusione è: Non Tab bar non sono mai stati destinati ad essere nascosto - dopo tutto perché hanno un UITabBarController se si desidera per nascondere la barra delle schede. Il hidesBottomBarWhenPushed sul controller di vista è per nascondere la barra inferiore di un controller di navigazione, non bar tab. Dalla documentazione: Un controller di vista aggiunto come figlio di un controller di navigazione può visualizzare una barra opzionale nella parte inferiore dello schermo. Il valore di questa proprietà sul più alto controller della vista determina se la barra degli strumenti è visibile. Se il valore di questa proprietà è SI, la barra degli strumenti è nascosta. Se il valore di questa proprietà è NO, la barra è visibile. Inoltre, siete avvertiti di non modificare direttamente la barra oggetto scheda. Anche in questo caso, dalla documentazione: Non si dovrebbe mai tentare di manipolare l'oggetto in sé UITabBar memorizzate in questa proprietà. Questo è esattamente quello che state facendo quando si imposta a nascosta. In iOS6 questo ha funzionato, ma ora in iOS7, si pretende molto. E sembra molto soggetto ad errori di nasconderlo. Quando finalmente riesce a nasconderlo, se l'applicazione va al fondo e torna, logica di layout Mele sovrascrive le modifiche. Il mio suggerimento è quello di visualizzare i dati in modo modale. In iOS7 è possibile creare transizioni personalizzate, quindi se è importante per voi di avere una transizione spinta, è possibile ricreare da soli, anche se questo è un po 'sopra le righe. transizione modale normale è qualcosa utenti sono familiari, e in realtà si inserisce questo caso meglio di spinta che nasconde la barra delle schede. Un'altra soluzione è quella di utilizzare una barra invece di una barra tab. Se si utilizza la barra degli strumenti di navigazione controller per le schede, è possibile utilizzare hidesBottomBarWhenPushed come desiderato e darebbe il comportamento che ci si aspetta. Ho scoperto che aggiungendo le seguenti 2 righe di codice in viewDidLoad di SecondViewController (dove si vuole nascondere TabBar ma mostrare la barra degli strumenti) risolve il problema. Il mio viewDidLoad di SecondViewController è il seguente: Ma è necessario fissare la cornice della vista manualmente come questo fa sì che la dimensione di essere (320x504). Il che significa che si estende anche dietro la barra degli strumenti. Se questo non è un problema per voi, allora questa soluzione dovrebbe funzionare. Il suo un bug in iOS 7 UIKit a causa di questa particolare combinazione di: UITabBarController hidesBottomBarWhenPushed barra degli strumenti SI edgesForExtendedLayout UIRectEdgeNone UINavigationController Si dovrebbe aprire un bug con Apple e includere il codice di esempio. Per aggirare il problema è necessario rimuovere una di queste quattro condizioni. Due opzioni possibili: Fissare il layout del secondo controller della vista in modo che funzioni correttamente quando edgesForExtendedLayout è impostato su UIRectEdgeAll. Questo potrebbe essere semplice come l'impostazione del contentInset su una visione di scorrimento. Non uso UINavigationControllers barra degli strumenti incorporati. Invece, creare un'istanza UIToolbar separato e aggiungerlo manualmente al secondo view controller. risposto 19 dicembre 13 alle 19:40 si ha a impostare la barra delle linguette della TabBarController di nascosto e la vostra vista avrebbe dovuto ridimensionamento automatico impostato all'altezza flessibile. Con questo codice il suo funzionamento: O, se si vuole usare il metodo hidesBottomBarWhenPushed, si deve fare questo prima di spingere il controller della vista, ovviamente: se si utilizza il secondo metodo, il metodo di viewDidLoad può sbarazzarsi del metodo di altezza flessibile, così come tabBarHidden: si parla che si può risolvere questo problema non tocca il edgesForExtendedLayout. C'è un motivo necessario che i contentcontrols del controller della vista sono contenuti nella vista principale del controller della vista spinto Si potrebbe considerare avvolgendo tutto in una visione che è il primo e unico figlio della vista principale. Quindi regolare che le opinioni cornice nelle viewDidLayoutSubviews del controller della vista spinto per evitare di avere il contenuto in modo permanente sotto la barra degli strumenti utilizzando il topbottomLayoutGuide del controller della vista. risposto 16 13 Dicembre a 16:13

No comments:

Post a Comment