Auto-Layout / Différence entre les iPhones

Hello à tous!

Comment différencie-t-on les différents iPhones ? en paysage, ils sont tous en largeur compact et hauteur regular (wC hR) mais comment fait-on pour les différencier et surtout, est-ce possible ?

Je m’explique, j’ai une image tout en haut de ma scene et en dessous j’affiche une autre image avec du texte encore en dessous. Bref, la hauteur entre mes 2 images en haut de l’écran ont une contrainte de 100, sur iPhone 7 +, 7, 6S+, 6S, 6+, 6 tout s’affiche comme je le voudrais, mais sur iPhone SE, j’aurais besoin que cette contrainte soit de 10 ou même 0 pour que ce qui est sous cette fameuse image ne déborder de l’écran.

J’aurais aussi souhaité modifier la taille que j’impose à l’image pour qu’elle soit un peu plus petite.

J’ai essayé de modifier la priorité de la contrainte, mais ça n’a aucun effet sur la position de l’image.

Tu peux utiliser des contraintes personnalisées, dont la taille s’adapte aux dimensions physiques de l’écran. J’ai déjà abordé le sujet dans ce topic :

http://community.purplegiraffe.fr/t/uitrait-et-sizeclass-pas-la-panacee-mais-a-t-on-mieux/41/2

Salut Didier,

Ce que tu peu faire c’est modifier la valeur de ta contrainte dans le code. Pour sa tu crée une outlet comme pour un element graphique (tu prend ta contrainte et tu la glisse dans le code avec la souris), en suite il suffit de modifier la propriété “constante” ex: macontrainte.constante = 10 . Attention toute fois, ces modifications doivent être faite dans la fonction override didLayoutSubview. Il est évident qu’il faudra que tu detect que tu es sur un iphone 4 pouces.

Il me semble que le bouton en bas à droite “Vary for Traits” peut être utilisé pour appliquer des contraintes à un type spécifique d’appareil selon l’orientation sélectionnée.
Utilise-le pour les contraintes de l’iphone SE.
Des pros devraient pouvoir d’en dire plus…

Binjour à tous,

J’ais mis un exemple de modification de contraintes sur mon blog:

https://www.myblog-it.fr/2017/03/19/exemple-pour-modifier-les-contraintes-en-swift/

Bonne soirée
Sebastien

1 « J'aime »

Non, cela ne marche pas. Il n’y a pas de réglage spécifique à l’iPhone SE. Les traits sont conçus pour s’adapter à des ratios d’écrans. Il n’y a que 4 combinaisons possibles :

Hauteur petite - Largeur petite
hauteur normale - Largeur petite
hauteur petite - largeur normale
Hauteur normale - Largeur normale

@sebgen : une raison particulière pour garder des majuscules sur le nom de tes outlets dans l’article ?

Non aucune, ca pose des soucis ?

Les outlets sont des variables. La convention de nommage en Swift (et pour le vénérable ancêtre Obj-C) est de commencer le nom des variables par des minuscules, réservant les majuscules pour les classes (UIView, UIButton, FicheUtilisateur, MaMaison, etc…) et les types de données (Int, Float, Double, etc…).

Ok je ferai attention la prochaine fois :slight_smile: