web-dev-qa-db-fra.com

Pourquoi une image UIButton personnalisée ne se redimensionne-t-elle pas dans Interface Builder?

Pourquoi une image UIButton personnalisée n'est-elle pas redimensionnée avec le bouton?

J'ai défini son mode d'affichage sur Scale to Fill dans Interface Builder, mais contrairement à une image UIImageView, il ne respecte pas ce paramètre.

Suis-je au mauvais endroit ou n'est-ce pas possible?

43
willc2

Bien que ce ne soit pas tout à fait ce que vous recherchez - l'image d'arrière-plan fait l'échelle.

81
teabot

Essaye ça:

[button setImage:image forState:UIControlStateNormal];
button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;

Dans Swift:

button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
53
Cao Huu Loc

N'oubliez pas de définir les paramètres d'alignement de contrôle pour le bouton

here set Control Alignment settings for the button

36
drpawelo

Je sais que c'est vieux, mais je pense que la bonne réponse est que vous devez définir le mode de contenu sur le UIImageView "caché" qui est à l'intérieur de l'UIButton:

button.imageView.contentMode = UIViewContentModeScaleAspectFill;

Cela changera le mode de contenu pour les vues d'images des images définies avec:

[button setImage:yourAwesomeImage forState:UIControlStateNormal]; 
//Or any other state
11
Raspu

Faites simplement (à partir de la conception OR à partir du code):

De la conception

  1. Ouvrez votre xib OR Storyboard.
  2. Bouton de sélection
  3. À l'intérieur Inspecteur d'attributs (Côté droit)> Dans "Contrôle" section> sélectionnez le dernier 4ème option pour horizontal et vertical.

[Pour le point n ° 3: modifier l'alignement horizontal et vertical en UIControlContentHorizontalAlignmentFill et UIControlContentVericalAlignmentFill]

Du code

button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill; button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;

10
Sandip Patel - SM

Interface Builder

Pour obtenir des images dans UIButtons à l'échelle de la même manière que UIViews dans l'interface Builder, procédez comme suit:

Sélectionnez votre UIButton et dans Identity Inspector ajoutez ce qui suit à User Defined Runtime Attributes:

imageView.contentMode Numéro 1

Où nombre est le nombre énuméré de contentMode, par exemple:

0 = Scale to fill 
1 = Aspect Fit 
2 = Aspect Fill
etc..

Ensuite, ouvrez l'éditeur Attributes pour votre UIButton et sous Control réglez Alignment sur Fill (dernier bouton à droite) à la fois horizontal et vertical.

Swift

Notez que vous pouvez également le faire dans le code avec les éléments suivants:

button.imageView?.contentMode = .scaleAspectFit
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
5

Essayez de définir la propriété Clip subviews dans Interface Builder sur true.

J'espère que cela pourra aider.

0
Dshutsi