web-dev-qa-db-fra.com

Définir le masque de redimensionnement automatique d'UIView par programme?

Je dois définir autoresizingMask par programme pour UIView.

Je ne sais pas comment mettre cela en œuvre.

enter image description here

53
Hiren

Pour réaliser ce que vous avez dans cette capture d'écran, vous devez faire le contraire de ce que DrummerB suggère. Vous voulez une marge supérieure fixe afin de rendre tous les autres côtés flexibles comme ceci:

Objectif C:

view.autoresizingMask = UIViewAutoresizingFlexibleRightMargin |
                        UIViewAutoresizingFlexibleLeftMargin |
                        UIViewAutoresizingFlexibleBottomMargin;

Ne pas définir un côté comme flexible signifie qu'il sera corrigé (comportement par défaut), c'est pourquoi il n'y a rien de tel que UIViewAutoResizingFixedTopMargin (car c'est la même chose que de ne pas définir UIViewAutoresizingFlexibleTopMargin)

Modifier pour Swift:

view.autoresizingMask = [.FlexibleRightMargin, .FlexibleLeftMargin, .FlexibleBottomMargin]

Nous remercions Tom Calmon d'avoir ajouté la Swift version 1st.

À votre santé.

85
pnizzle

Vous devez définir la propriété autoresizingMask de la vue:

view.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;

Les valeurs possibles sont définies dans UIViewAutoresizing:

enum {
   UIViewAutoresizingNone                 = 0,
   UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
   UIViewAutoresizingFlexibleWidth        = 1 << 1,
   UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
   UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
   UIViewAutoresizingFlexibleHeight       = 1 << 4,
   UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;

Vous pouvez définir plusieurs valeurs avec l'opérateur au niveau du bit OR |.

23
DrummerB

Swift 2.0:

view.autoresizingMask = [.FlexibleRightMargin, .FlexibleLeftMargin, .FlexibleBottomMargin]
21
Tom Calmon

Swift 4.1:

view.autoresizingMask = [.flexibleHeight, .flexibleWidth, .flexibleTopMargin, .flexibleRightMargin, .flexibleLeftMargin, .flexibleBottomMargin]
4
Jimmy_m

Pour définir la marge supérieure flexible, la marge inférieure, la marge gauche et la marge droite d'un UIView, écrivez le code suivant:

autoresizingMask=UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
0
user4919266