Che cos'è "Vary for Traits" in Xcode 8?


86

Sto usando le classi AutoLayout e Size, ma con il rilascio di iOS 10 e del nuovo Xcode 8.0, c'è una nuova opzione Vary for Traits. È questo il sostituto di Size Classe per dispositivi di diversa larghezza e altezza.

inserisci qui la descrizione dell'immagine

Selezionando la widthcasella di controllo, viene visualizzato varying 14 compact width devices.

inserisci qui la descrizione dell'immagine

Selezionando la heightcasella di controllo, viene visualizzato varying 18 compact height devices.

inserisci qui la descrizione dell'immagine

Selezionando entrambe le caselle di controllo, viene visualizzato varying 11 compact width regular height devices.

inserisci qui la descrizione dell'immagine

Come utilizzare queste opzioni? Possiamo usare AutoLayout con classi di dimensioni come Xcode7.0? Se qualcuno ha una conoscenza approfondita, spiegalo.


Dai un'occhiata ai video della sessione del WWDC 2016. Sono sicuro che è stato trattato da qualche parte come "nuove funzionalità di Xcode".
Martin R

Risposte:


134

Questa è solo un'estensione su come utilizzare rapidamente "Vary Traits" nel tuo progetto per aggiungere diversi layout per iPad e iPhone.

Si prega di leggere questo per saperne di più sulle classi di taglia.

https://developer.apple.com/reference/uikit/uitraitcollection

inserisci qui la descrizione dell'immagine

Se stai saltando l'esempio che segue, leggi il Riepilogo alla fine.


  • OBBIETTIVO :

Hai bisogno di un pulsante con larghezze diverse su iPhone e iPad. Il primo ha una larghezza di 80 e il secondo ha una larghezza di 300.

  • METODO 1:

Varia per tratti con vincoli multipli come installato.

  • PASSI:

    1. Aggiungi prima i vincoli comuni come Centra il pulsante orizzontalmente e verticalmente.

inserisci qui la descrizione dell'immagine

  1. Scegli VaryForTraits e per gli schermi iPhone secondo le linee guida della classe di dimensioni, una classe di taglia C * R si adatta al modello e questo controlliamo i segni di spunta di Larghezza e Altezza in PopUp. Chiudi il popup facendo clic in un punto qualsiasi dello schermo.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

  1. Aggiungi la costante di larghezza e controlla se il vincolo è stato aggiunto per la classe di dimensioni C * R. Dopo aver aggiunto i vincoli, selezionare il pulsante Variazione completata.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

  1. Per gli schermi dell'iPad, seleziona nuovamente qualsiasi dispositivo iPad e scegli VaryForTraits e questa volta facendo clic su altezza-larghezza, dovrebbe mostrare la variazione R * R.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

  1. Aggiungi di nuovo un vincolo di larghezza, l'ultimo vincolo di larghezza dell'iPhone aggiunto deve essere disattivato come nello screenshot. Questa volta il valore aggiunto sarà per la classe di taglia R * R.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

  1. Torna al layout dell'iPhone e richiede 80 come larghezza e iPad 300.

inserisci qui la descrizione dell'immagine

CONCLUSIONE :

Si noti che ci sono in totale due vincoli aggiunti e in entrambi i vincoli i valori differiscono a seconda della classe dimensionale scelta.


  • METODO 2:

Varia per tratti con vincolo singolo, più classi di dimensioni installate

  • PASSI:
    1. Aggiungi il vincolo di larghezza normale. Quindi seleziona quel vincolo e scegli il pulsante + oltre al valore Costante.

inserisci qui la descrizione dell'immagine

  1. Aggiungi una variazione del tratto e per iPhone scegliamo C * R e impostiamo il valore costante su 100.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

  1. Sempre per iPad che segue una variazione di tratto come R * R, aggiungiamo un'altra variazione facendo nuovamente clic sul pulsante + e impostiamo il valore su 300.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

  1. Seleziona un iPad e la larghezza verrà automaticamente presa come 300 e tornando su iPhone ci vuole 100 come valore.

inserisci qui la descrizione dell'immagine

CONCLUSIONE :

Questa sembra essere un'opzione migliore piuttosto che aggiungere due vincoli quando è richiesto un solo vincolo e il valore della costante è diverso.

QUANDO USARE, COSA USARE:

Entrambi gli approcci stanno fondamentalmente facendo la stessa cosa, impostando i valori su Size-classes.

Ma, # Method1 viene utilizzato quando si desidera aggiungere un vincolo specifico per un dispositivo o dire size-class. Ad esempio, in iPhone il pulsante dovrebbe essere tra i primi 50 punti e in iPad dovrebbe essere centrato orizzontalmente e verticalmente. In tali situazioni, è necessario utilizzare VaryForTraits poiché apre le porte per aggiungere vincoli per una classe di dimensioni specifica.

# Method2 viene utilizzato quando si desiderano valori costanti diversi per uno stesso tipo di vincolo.

PS: A TUTTI QUELLI CHE NON SONO IN GRADO DI FAR FUNZIONARE L'ESEMPIO

Assicurati di aggiungere solo i vincoli richiesti come Installato. La casella di controllo su Installato dovrebbe apparire solo per il vincolo necessario per una classe di dimensioni. Questa è la chiave!

inserisci qui la descrizione dell'immagine

Basta aggiungere un vincolo superiore e un'indicazione a un uiButton in una vista. Seleziona il vincolo superiore e deseleziona l'opzione di base Installato con segno più. Ora, facendo clic sul segno più, aggiungi una variazione a C R e seleziona quell'opzione. Ora cambia il dispositivo da iPhone a iPad con varie combinazioni di orientamento. Questo vincolo verrà applicato solo per la classe di taglia C R che è iPhone con orientamento verticale. Se è stata selezionata la casella di spunta rispetto all'Installato di base (quella con il simbolo Più) significa che il vincolo deve essere applicato a tutte le classi di dimensioni.

SOMMARIO :

La variazione delle caratteristiche è una modifica alla presentazione dell'interfaccia utente basata su una configurazione del dispositivo. Le variazioni dei tratti dell'interfaccia utente non sono limitate solo ai vincoli, ma possono essere applicate a molto di più. Come cambiare il colore dello sfondo e altri elementi quando il dispositivo è impostato su uno stile scuro. Una variazione può essere applicata a un elemento dell'interfaccia utente, ad esempio la rimozione di un vincolo, oppure a una proprietà di una classe di visualizzazione o di un vincolo, come il carattere di un'etichetta. Puoi variare:

  • Dimensioni o posizione di una vista

  • Installazione di una vista

  • Installazione di un vincolo

  • Costante di vincolo

  • Font

  • Colore per il carattere, la tinta o lo sfondo

  • Margini del layout

  • File immagine

Il set specifico di proprietà che puoi variare dipende dalla classe dell'elemento. Nell'esempio, abbiamo dimostrato l'uso di - Installazione di un vincolo e - Costante di vincolo. Altri sono abbastanza semplici e possono essere facilmente dedotti.


51
Questo non funziona per me .. Aggiorna i vincoli su tutte le dimensioni dello schermo e praticamente non succede nulla ...
Dan

5
Se non funziona, prova a leggere questo: help.apple.com/xcode/mac/8.0/#/devba3dd0b51 . Se desideri personalizzare il carattere o un'altra proprietà, fai clic su "+" che si trova a sinistra della proprietà nel riquadro degli attributi. E non puoi variare i tratti per iPhone 4s e iPhone 7 Plus, a seconda della larghezza, ad esempio, poiché sono entrambi di larghezza compatta. Puoi modificarli per iPhone e iPad.
Denis Kutlubaev

2
Ha lavorato per me grazie :)
Sanman

1
Ha funzionato per me dopo aver eliminato il vecchio vincolo e aggiunto uno nuovo, invece di sostituire il suo valore.
Teodor Ciuraru

2
Per le persone che dicono che questo non funziona. Penso che tu stia cercando di cambiare tutto il vincolo, puoi solo il valore costante in un vincolo, non puoi effettivamente modificare le proprietà multiple o di altro tipo del vincolo. Ero anche confuso su questa parte.
3366784

21

Vary for traits è l'evoluzione dell'opzione delle classi di dimensione che era presente nella versione precedente di Xcode. Consente una variazione molto più elegante e precisa in base ai tratti. Ovviamente non si limita alle sole variazioni di iPad / iPhone ma è possibile specificare anche variazioni in base all'orientamento e al diverso dispositivo.

Altre risposte in questo thread hanno alcune carenze e imprecisioni, forse il modo più efficiente per dare una risposta è fare un esempio. Per motivi di chiarezza limiteremo il nostro esempio a un solo pulsante e due layout. Tuttavia, come spiegato di seguito, è possibile estendere il seguente esempio come si desidera. Il nostro obiettivo è regolare la posizione di un pulsante tra due diversi layout: orizzontale e verticale su tutti i dispositivi.

Nota: se non è abilitata l'opzione “variare per tratti”, tutte le regolazioni del layout e dell'interfaccia ui si riferiscono a tutte le caratteristiche (cioè tutte le classi di dimensione).

Fig. 1

Cominciamo mettendo un pulsante sul nostro storyboard. Poiché "varia per tratti" non è abilitato, il pulsante sarà presente in tutti i diversi layout. Se, invece, avessimo abilitato la variazione per i tratti il ​​pulsante sarebbe stato riferito solo al particolare tratto selezionato.

fig2

Ora abilitiamo "varia per tratto" e scegliamo una variazione in base all'altezza. Dovresti vedere che lo schermo inferiore diventerà blu e in base alla selezione vedrai tutti i dispositivi interessati. Fin qui tutto bene.

fig3

Seleziona nuovamente il pulsante e aggiungi i vincoli come di consueto. Nel nostro esempio, aggiungeremo lo spazio iniziale superiore e sinistro, nonché la larghezza e l'altezza. Successivamente, fare clic su "Variazione completata". Vedrai che la parte inferiore dello schermo diventerà di nuovo grigia. Quello che sta accadendo è che abbiamo detto a Interface Builder di aggiungere i vincoli di cui sopra solo per le classi (w: C h: R).

fig4

Ora seleziona la modalità orizzontale nella parte inferiore dello schermo. Vedrai che il Button è in rosso, perché manca dei vincoli che hai aggiunto solo per alcuni tratti. Seleziona nuovamente la variazione per i tratti e seleziona nuovamente la variazione di altezza. Aggiungi i seguenti vincoli:

fig5

e premere fatto variando. Ora il pulsante è ben identificato sullo schermo sia per il paesaggio che per il ritratto.

fig6

Costruisci ed esegui. Vedrai che il pulsante cambierà in base all'orientamento dello schermo.

Puoi creare layout più avanzati seguendo questo schema. Ad esempio, puoi selezionare all'inizio una variazione per tratti e rilasciare oggetti UIKit solo per un tratto specifico. Questo oggetto sarà presente solo nella variante specificata e risulterà in grigio sulle altre permettendo di creare interfacce utente completamente differenti in base ai tratti.


3
Ho aggiunto vincoli per la classe (wC, hR), quindi ho fatto clic su fatto variando. Quando apro (wR, hR), vedo anche i vecchi vincoli. Come creare nuovi vincoli per (wR, hR) questa classe. Per favore dimmi @valvolin
Ramcharan Reddy

9

Non è altro che size classesse stesso ma con una rappresentazione diversa. fino a quando non xcode 7abbiamo utilizzato le classi di dimensioni e le consideriamo height-widthin regular,compact and anymodovary for traits concetto è lo stesso ma xcode spiega specificamente exact device. Nella versione precedente sappiamo che for every iphone in portraintecc. Tipo di informazioni dove in questo possiamo conoscere il dispositivo esatto!

Controlla le schermate sottostanti,

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Dovresti fare riferimento wwdc2016 - video per maggiori informazioni!

Riferimento: This So Post


Ok, fammi controllare il video WWDC.
tecnico

Hai ragione, non è altro che l'evoluzione delle classi di taglia
Durai Amuthan.H
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.