81 votes

Comment puis-je redimensionner l'imageView d'UIButton?

J'ai créer un UIButton instance(nommé "bouton") avec une image, utilisez [UIButton setImage:forState:] de la fonction, le bouton.le cadre est plus grand que la taille de votre image. Maintenant, je tiens à l'échelle de ce bouton, l'image plus petite. J'avais essayé de changer de button.imageView.frame, button.imageView.bounds et button.imageView.contentMode, mais tous semblent inefficaces.

J'espère que quelqu'un peut m'aider comment faire pour mettre à l'échelle un UIButtons'imageView.Merci!

mon créez UIButton exemple de code:

UIButton *button = [[UIButton alloc] init];
[button setImage:image forState:UIControlStateNormal];

ma essayer à l'échelle de l'image de code:

button.imageView.contentMode = UIViewContentModeScaleAspectFit;
button.imageView.bounds = CGRectMake(0, 0, 70, 70);

et:

button.imageView.contentMode = UIViewContentModeScaleAspectFit;
button.imageView.frame = CGRectMake(0, 0, 70, 70);

94voto

Chris Points 2012

Pour l'affiche originale, voici la solution que j'ai trouvée:

 commentButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
 

Cela permettra à votre bouton de redimensionner horizontalement. Il y a aussi un réglage vertical.

Il m'a fallu plusieurs heures pour comprendre que celui-ci (la dénomination de la propriété est très peu intuitive) a donc compris que je le partagerais.

68voto

Hitesh Savaliya Points 458

J'avais étaient confrontés au même problème, j'ai une Image de fond (avec bordure) et une image (drapeau) pour un bouton personnalisé. Je voulais drapeau à être revus à la baisse et dans le centre. J'ai essayé de changer imageView de l'attribut, mais n'a pas réussi et a été de voir cette image --

enter image description here

Au cours de mes expériences, j'ai essayé :

button.imageEdgeInsets = UIEdgeInsetsMake(kTop,kLeft,kBottom,kRight)

J'ai obtenu le résultat escompté :

enter image description here

25voto

pavelpanov Points 109

utilisation

 button.contentMode = UIViewContentModeScaleToFill;
 

ne pas

 button.imageView.contentMode = UIViewContentModeScaleAspectFit;
 

15voto

EEE Points 2849
    UIButton *button= [[UIButton alloc] initWithFrame:CGRectMake(0,0,70,70)];
    button.buttonType = UIButtonTypeCustom;
    UIImage *buttonImage = [UIImage imageNamed:@"image.png"];

    UIImage *stretchableButtonImage = [buttonImage stretchableImageWithLeftCapWidth:12 topCapHeight:0]; 
    [button setBackgroundImage:stretchableButtonImage forState:UIControlStateNormal];

10voto

marcio Points 2397

J'ai trouvé cette solution.

1) Sous-classe les méthodes suivantes de UIButton

 + (id)buttonWithType:(UIButtonType)buttonType {
    MyButton *toReturn = [super buttonWithType:buttonType];
    toReturn.imageView.contentMode = UIViewContentModeScaleAspectFit;
    return toReturn;
}

- (CGRect)imageRectForContentRect:(CGRect)contentRect {
    return contentRect;
}
 

Et ça marche bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X