J'étais dans une hypothèse (probablement fausse) qu'activer l'indicateur de marge de droite dans xib équivaut à utiliser du UIViewAutoresizingFlexibleLeftMargin
code interne et ainsi de suite.
Donc, je pensais en fonction de cet instantané:
Plus tard dans la journée, j'ai dû recouper et suis tombé sur ce fil .
Et aussi la documentation Apple, intitulée avec la section intitulée "Gérer automatiquement les modifications de mise en page à l'aide des règles de redimensionnement automatique" dans ce lien: https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/ CreatingViews.html
Donc, j'ai maintenant un concept renouvelé dans mon esprit quant à la façon dont la définition de masques de redimensionnement automatique par programme serait équivalente aux paramètres xib:
Scénario 1 : le paramètre uniquement (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)
équivaut à:
Dans XIB?
Scénario 2 : La définition (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)
du code équivaut à:
Dans XIB?
Mes 2 scénarios renouvelés sont-ils corrects? Suis-je en ce moment dans ma compréhension?
la source
Réponses:
Oui, Interface Builder l'a "inversé" dans un sens (ou UIView, selon la façon dont vous le voyez). Vos "scénarios" cités sont corrects.
la source
Oui, vous avez correctement cité les choses. De plus, je conviens que cela semble un peu en arrière, donc pour cette raison, j'apprécie votre message.
Vous aimerez peut-être utiliser une macro de préprocesseur
UIViewAutoresizingFlexibleMargins
lors de la flexibilité d'une marge UIView dans toutes les directions. J'ai mis cela dans le fichier d'en-tête précompilé pour qu'il soit inclus partout.L'utilisation
UIViewAutoresizingFlexibleMargins
permet à un élément d'interface utilisateur de rester centré, car il n'embrassera aucun côté. Pour faire croître / rétrécir l'élément avec son parent, définissez respectivementUIViewAutoresizingFlexibleWidth
etUIViewAutoresizingFlexibleHeight
.J'aime utiliser
UIViewAutoresizingFlexibleMargins
parce que je pourrai le référencer plus tard comme:au lieu de
Tous trop souvent, je vois ces marges OU ensemble sur une seule ligne comme l'exemple ci-dessus. Difficile à lire.
la source
L'activation de la flèche verticale / horizontale (appelée ressort) à l'intérieur de la boîte rendra la hauteur / largeur flexible. Mais l'activation d'une ligne extérieure (appelée entretoise) rendra ce côté inflexible / non flexible.
L'activation de la ligne extérieure gauche (jambe gauche) n'est pas équivalente à l'activation
UIViewAutoresizingFlexibleRightMargin
. Au lieu de cela,UIViewAutoresizingFlexibleRightMargin
= sur si jambe droite désactivé, hors si jambe droite activée.C'est assez déroutant au début, mais si vous regardez de près, il y a une différence entre les ressorts et les jambes de suspension. Je ne sais pas pourquoi Apple a fait cela, mais pour moi, il y avait des cas où c'était plus facile à utiliser. Et l'utilisation de propriétés opposées dans le code est encore plus déroutante.
la source
Swift 4 utilise ceci
Objectif c
la source