2013-04-29 12 views
16

Quando si utilizzano file .xib, quale impatto sul proprio codice/app cambia le metriche simulate? O è solo a tuo vantaggio come strumento di anteprima?Che impatto hanno le metriche simulate?

+1

Se si seleziona Metrica simulata -> Dimensione, quindi specificare la dimensione della vista nel file Xib, questa vista avrà questa dimensione quando caricata – onmyway133

risposta

12

I simulati Metrics sono per lo più un aiuto di progettazione per aiutare la creazione del vostro interfaccia. Hanno un impatto diretto limitato su .xib * [1]. Sono molto utili perché puoi simulare cose come il controller di visualizzazione inserito in un controller di navigazione, che ti dà meno spazio su cui lavorare poiché la barra di navigazione occupa un po 'di spazio. Sono anche molto utili se stai creando una viewController che verrà utilizzata solo in orizzontale. All'epoca in cui sono stati introdotti, era l'unico modo per verificare l'aspetto della tua interfaccia sul display più piccolo di iPhone 4 e sul display più alto di iPhone 5 * [2].

Mi capita spesso di impostare la Dimensioni-iPhone 4 pollici perché: 1) Trovo lavorare in piazza viewController distrazione, 2) Si occupa molto meno spazio sullo schermo che mi permette di vedere di più della mia Storyboard sul mio display portatile. Questo metodo è molto meno pericoloso che modifica la classe di dimensioni in wC hR perché quest'ultimo influenzerà effettivamente quali vincoli vengono utilizzati per dispositivi di dimensioni diverse.


[1] Il Dimensioni e Orientamento metriche influenzerà la dimensione del viewController come è memorizzato nel file .xib o .storyboard. Se si lascia l'impostazione come dedotta, Xcode utilizzerà 600 x 600 come dimensione del viewController. Normalmente, questo non fa alcuna differenza, perché il viewController sarà dimensionato correttamente sul dispositivo quando viene caricato.

[2] Al momento simulato Metrics sono stati introdotti, questo è stato il modo in cui per testare i progetti per l'iPhone 4S contro i nuovi alti iPhone 5. Apple ha introdotto da quando altri modi migliori di check-out disegni su dispositivi di varie dimensioni.

+0

Cool, grazie! Quindi non sono di grande aiuto se tutto è programmato a livello di codice, che nell'app sto lavorando è il caso. Grazie vacawama. – drc

+1

Ho un controller di visualizzazione (in uno storyboard), che se cambio le metriche simulate "dimensione" da "inferito" a 3,5 pollici, l'UITableView che sto usando è l'altezza corretta per consentire all'utente di scorrere fino a il fondo. – drc

+14

In questo caso, sembra che la modifica delle metriche simulate abbia un impatto diretto sulla mia app? Sto testando su un dispositivo reale. – drc

13

Beh, in realtà la modifica delle metriche simulate influisce in modo molto subdolo sulla tua applicazione. L'ho scoperto mentre usavo la libreria SwipeView e le mie diapositive sono state tutte influenzate modificando la dimensione della metrica simulata.

Sotto il cofano la modifica che la dimensione imposta il valore rect del file pennino in quanto tale:

<rect key="frame" x="0.0" y="0.0" width="600" height="600"/> 

Tale valore è gonna essere la dimensione dei lanci pennino. Se proviamo a misurare gli elementi in vista hanno appariranno carico e vista avremo informazioni false:

// viewDidLoad 
(lldb) po splashImageView 
<UIImageView: 0x79913eb0; frame = (0 0; 600 600); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x799ca310>> 


// viewWillAppear 
(lldb) po splashImageView 
<UIImageView: 0x79913eb0; frame = (0 0; 600 600); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x799ca310>> 

Una volta che il subviews layout è fatto noi abbiamo la dimensione corretta ma per quanto SwipeView è interessato è troppo tardi esso già calcolato la posizione di tutto.

// viewDidLayoutSubviews 
(lldb) po splashImageView 
<UIImageView: 0x79913eb0; frame = (0 0; 768 1024); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x799ca310>> 

Se qualcuno può fornire ulteriori informazioni mi piacerebbe davvero.

+0

Buono a sapersi; questo può essere particolarmente fastidioso quando si desidera inizializzare a livello di codice il contenuto della vista in awakeFromNib e non ha ancora la dimensione giusta! – DivideByZer0

+0

Ciao Hugo ... Hai risolto questo problema? Sto usando swipeView e ho incontrato questo problema da solo. A meno che non modifico le metriche simulate, non viene correttamente sul dispositivo. Come aggirare questo problema? – momentsnapper

+0

@momentsnapper Non l'ho fatto, alla fine questa vecchia applicazione a cui stavo lavorando aveva molto più lavoro richiesto per essere davvero multischermo. Ho mantenuto le metriche simulate su una dimensione dello schermo di iPhone 5. – Hugo

4

Guarda WWDC 2015 Session 407 Implementing UI Designs in Interface Builder, hanno parlato simulati Metrics

enter image description here

dedurre

Ora, in questo momento sono tutti dicendo dedotto. Deducibilmente semplicemente significa usare il contesto intorno a me. Sappiamo di essere all'interno di una barra delle schede del controller , sappiamo che siamo all'interno di un controller nav in modo che l'interfaccia builder sappia quale barra mostrare.

simulati Metrics

Tutte queste metriche non influiscono l'applicazione effettiva in fase di esecuzione con una sola eccezione e che è la dimensione simulato metrica.

La dimensione metrica simulata sarà effettivamente cambiare il formato del vostro controller della vista ma in generale si sta andando a metterlo in una vista di controllo gerarchia che ridimensionarlo, ma è anche utile se si è creando gratuito forma controller, ad esempio, e desidera impostare la propria dimensione .

Problemi correlati