Qu'est-ce que "Vary for Traits" dans Xcode 8?

j'utilise les classes D'AutoLayout et de taille, mais avec la sortie de iOS 10 et le nouveau Xcode 8.0, il y a une nouvelle option Vary for Traits . Est-ce le remplacement de la classe de taille pour la largeur différente et la hauteur des dispositifs.

enter image description here

par sélection de width case à cocher, il affiche varying 14 compact width devices .

enter image description here

par sélection de height case à cocher, il affiche varying 18 compact height devices .

enter image description here

par sélection des deux cases à cocher, il affiche varying 11 compact width regular height devices .

enter image description here

comment utiliser ces options ? Pouvons-nous utiliser AutoLayout avec des classes de taille comme xcode7.0 ? Si quelqu'un a des connaissances approfondies alors s'il vous plaît l'expliquer.

65
demandé sur shim 2016-10-06 10:29:58

3 réponses

c'est juste une extension sur la façon d'utiliser" Vary Traits " rapidement dans votre projet pour ajouter des mises en page différentes pour iPad et iPhones.

lisez ceci pour comprendre plus sur les classes de Taille.

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

enter image description here

si vous sautez l'exemple qui ci-dessous, de lire le Résumé à la fin.


  • objectif:

vous avez besoin d'un bouton ayant des largeurs différentes dans l'iPhone et l'iPad. L'ancien ayant la largeur de 80 et dernier ayant une largeur de 300.

  • méthode 1:

varient pour les Traits avec des contraintes multiples tels qu'installés.

  • étapes:

    1. ajouter les contraintes communes D'abord comme centrer le bouton horizontalement et verticalement.

enter image description here

  1. choisissez VaryForTraits et pour les écrans iPhone selon les directives de classe de taille, une classe de taille C*R s'adapte au Modèle et nous vérifions les poinçons de largeur & hauteur dans PopUp. Rejeter le pop-up en cliquant n'importe où sur l'écran.

enter image description here enter image description here

  1. ajouter la constante de largeur et vérifier si la contrainte est ajoutée pour C*R classe de taille. Après avoir ajouté des contraintes, choisissez le bouton fait varier.

enter image description here enter image description here

  1. pour les écrans iPad, sélectionnez de nouveau n'importe quel appareil iPad et choisissez VaryForTraits et cette fois en cliquant hauteur-largeur, il devrait afficher la variation R*R.

enter image description here enter image description here

  1. une nouvelle fois ajouter une contrainte de largeur, la dernière contrainte de largeur iPhone ajouté doit être non éclairé comme dans la capture d'écran. La valeur ajoutée sera cette fois pour la classe de taille R*R.

enter image description here enter image description here

  1. revenir à mise en page iPhone et il prend 80 que la largeur et iPad prendra 300.

enter image description here

CONCLUSION:

s'il vous plaît noter qu'il y a au total deux contraintes ajoutées et dans les deux contraintes, les valeurs diffèrent selon la classe de taille choisie.


  • méthode 2 :

variable pour les Traits avec une contrainte unique, classe de taille multiple installée

  • STEPS:
    1. ajouter la contrainte de largeur normale. Ensuite, sélectionnez cette contrainte et choisissez le bouton + en plus de la valeur constante.

enter image description here

  1. ajoutez la variation de trait, et pour iPhone nous choisissons C*R et définissons la valeur constante comme 100.

enter image description here enter image description here

  1. encore une fois pour iPad qui suit une variation de trait comme R*R, Nous ajoutons une autre variation en cliquant de nouveau sur le bouton + et réglons la valeur comme 300.

enter image description here enter image description here

  1. sélectionnez un iPad et la largeur sera automatiquement prise comme 300 et revenir à l'iPhone, il prend 100 comme valeur.

enter image description here

CONCLUSION:

cela semble être une meilleure option plutôt que d'ajouter deux contraintes lorsqu'une seule contrainte est nécessaire et que la valeur constante diffère.

QUAND UTILISER, QUOI FAIRE :

les deux approches font essentiellement la même chose, en fixant des valeurs à des classes de taille.

mais, # Method1 est utilisé lorsque vous voulez ajouter une contrainte spécifique pour un périphérique ou dire classe de taille. Par exemple, dans l'iPhone le bouton devrait être à partir du Top 50 pts et dans l'iPad il devrait être centré horizontalement et verticalement. Dans de telles situations, vous devez utiliser VaryForTraits car il ouvre des portes pour ajouter des contraintes pour une classe de taille spécifique.

#Method2 est utilisé lorsque vous voulez des valeurs constantes différentes pour un même type de contrainte.

P. S: TO ALL THOSE WHO ARE NOT ABLE TO GET THE EXAMPLE WORKING

s'il vous Plaît assurez-vous que vous ajoutez seules les contraintes Installé. La case à cocher Par rapport à installé ne doit apparaître que pour la contrainte dont vous avez besoin pour une classe de taille. C'est la clé!

enter image description here

il suffit d'ajouter une contrainte supérieure et un menant à un uiButton dans une vue. Sélectionnez la contrainte supérieure et décochez la de base Installé en option avec un signe Plus. Maintenant, en cliquant sur le signe Plus, ajoutez une variation à C R et cochez cette option. Maintenant, changez l'appareil de l'iPhone à l'iPad avec diverses combinaisons d'orientation. Cette contrainte ne sera appliquée qu'à la classe de taille C R qui est iPhone en orientation portrait. Si la case à cocher Par rapport à la case de base installée (celle avec le symbole Plus) était cochée, cela signifie que la contrainte devrait être appliquée à toutes les classes de taille.

résumé:

la Variation du Trait est une modification de la présentation de votre interface utilisateur basée sur une configuration de périphérique. les Variations des traits de l'interface utilisateur ne se limitent pas aux contraintes mais peuvent être appliquées à beaucoup plus. Comme changer la couleur de l'arrière-plan et d'autres éléments lorsque l'appareil est réglé pour une sombre style. Une variante peut s'appliquer à un élément de l'interface utilisateur, par exemple la suppression d'une contrainte ou à une propriété d'une classe d'affichage ou de contrainte, tels que la police pour une étiquette. Vous pouvez varier:

  • taille ou position d'une vue

  • Installation d'une vue

  • Installation d'une contrainte

  • contrainte constante

  • de la Police

  • couleur pour la police, la teinte ou l'arrière-plan

  • Mise en page marges

  • fichier Image

L'ensemble de propriétés que vous pouvez varier dépend de la classe de l'élément. Dans l'exemple, nous avons démontré l'utilisation de - Installation d'une constante contrainte & - contrainte . D'autres, sont assez simples et peut être facilement déduite.

108
répondu Jen Jose 2017-05-28 18:39:30

Vary for traits est l'évolution de l'option classes de taille qui était présente dans la version précédente de Xcode. Il permet une variation beaucoup plus fine et précise basée sur des traits. Bien sûr, il n'est pas limité aux variations iPad/iPhone seulement, mais vous pouvez spécifier également des variations basées sur l'orientation et l'appareil différent.

D'autres réponses dans ce fil ont quelques lacunes et inexactitudes, peut-être la façon la plus efficace de donner une réponse est de faire un exemple. Pour l'amour pour plus de clarté, nous limiterons notre exemple à seulement un bouton et deux mises en page. Cependant, comme expliqué ci-dessous, vous pouvez étendre l'exemple suivant que vous le souhaitez. Notre objectif est d'ajuster la position d'un bouton entre deux configurations différentes: paysage et portrait sur tous les appareils.

Note: Si l'option "vary for traits" n'est pas activée, tous les réglages de la mise en page et de l'interface d'interface d'interface d'interface sont référés à tous les traits (c.-à-d. toutes les classes de taille).

fig1

commençons par mettre un bouton sur notre storyboard. Depuis "varient pour les traits" n'est pas activé, le bouton sera présent dans tous les différents modèles. Si, au contraire, nous avions activé vary pour les traits, le bouton serait référé seulement au trait particulier sélectionné.

fig2

maintenant, activons "vary for trait" et choisissons une variation basée sur la hauteur. Vous si vous voyez que l'écran du bas va tourner en bleu et selon la sélection, vous verrez tous les appareils touchés. Pour l'instant, donc bon.

fig3

sélectionner de nouveau le bouton et ajouter les contraintes ad usual. Dans notre exemple, nous ajouterons l'espace de tête supérieur et gauche ainsi que la largeur et la hauteur. Après cela, cliquez sur"fait varier". Vous verrez que la partie inférieure de l'écran gris encore. Ce qui se passe est que nous avons dit à Interface Builder d'ajouter les contraintes ci-dessus uniquement pour les classes (w:C h:R).

fig4

sélectionnez maintenant le mode paysage en bas de l'écran. Vous verrez que le bouton est en rouge, parce qu'il manque les contraintes que vous avez ajoutées seulement pour certains traits. Sélectionnez à nouveau varier pour les traits et sélectionnez à nouveau la variation en hauteur. Ajouter le suivant contraintes:

fig5

et la presse fait varier. Maintenant, le bouton est bien identifié sur l'écran à la fois paysage et portrait.

fig6

Build and run. Vous verrez que le bouton changera selon l'orientation de l'écran.

, Vous pouvez créer plus avancé layouts suivant ce modèle. Par exemple, vous pouvez sélectionner au début une variable pour les traits et déposer des objets UIKit uniquement pour un trait spécifique. Cet objet ne sera présent que dans la variante spécifiée et sera grisé sur les autres pour vous permettre de créer des interfaces utilisateur complètement différentes basées sur des traits.

18
répondu valvoline 2016-11-01 10:29:23

Ce n'est rien mais size classes il l'auto, mais avec une représentation différente. jusqu'à xcode 7 nous avons utilisé des classes de taille et nous considérons height-width dans regular,compact and any manière, dans vary for traits le concept est même mais Xcode expliquer spécifiquement exact device . Dans la version plus ancienne, nous savons que for every iphone in portraint etc sorte d'informations où dans ce que nous pouvons connaître appareil exact!

vérifiez les captures d'écran ci-dessous,

enter image description here

enter image description here

vous devez Vous référer à wwdc2016 - vidéo pour plus d'informations!

La Référence : Ce Tant De Poster

8
répondu Lion 2017-05-23 12:10:42