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?
Bien que ce ne soit pas tout à fait ce que vous recherchez - l'image d'arrière-plan fait l'échelle.
Essaye ça:
[button setImage:image forState:UIControlStateNormal];
button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
Dans Swift:
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
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
Faites simplement (à partir de la conception OR à partir du code):
[Pour le point n ° 3: modifier l'alignement horizontal et vertical en UIControlContentHorizontalAlignmentFill et UIControlContentVericalAlignmentFill]
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill; button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
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
Essayez de définir la propriété Clip subviews dans Interface Builder sur true.
J'espère que cela pourra aider.