Je veux ajouter une image à un UIButton, et je veux également redimensionner mon image pour l'adapter à l'UIButton (réduire l'image). Veuillez me montrer comment faire.
C'est ce que j'ai essayé, mais cela ne fonctionne pas:
- Ajout d'une image au bouton et utilisation
setContentMode
:
[self.itemImageButton setImage:stretchImage forState:UIControlStateNormal];
[self.itemImageButton setContentMode:UIViewContentModeScaleAspectFit];
- Créer une "image étirée":
UIImage *stretchImage = [updatedItem.thumbnail stretchableImageWithLeftCapWidth:0 topCapHeight:0];
Réponses:
Si vous voulez vraiment mettre à l'échelle une image, faites-le, mais vous devez la redimensionner avant de l'utiliser. Le redimensionner au moment de l'exécution perdra simplement des cycles CPU.
Voici la catégorie que j'utilise pour redimensionner une image:
UIImage + Extra.h
UIImage + Extra.m
Vous pouvez l'utiliser à la taille souhaitée. Comme :
la source
UIGraphicsBeginImageContext
au lieu deUIGraphicsBeginImageContextWithOptions
. Je viens de le réparer.J'ai eu le même problème. Définissez simplement le ContentMode de ImageView qui se trouve à l'intérieur de l'UIButton.
J'espère que cela t'aides.
la source
imageView.contentMode
, le typeNumber
et la valeur de la1
Aucune des réponses ici n'a vraiment fonctionné pour moi, j'ai résolu le problème avec le code suivant:
Vous pouvez également le faire dans Interface Builder.
la source
Aspect fit
place descale to fill
.Le moyen le plus simple de définir par programme une imageView UIButton en mode d' ajustement de l'aspect :
Rapide
Objectif c
Remarque: vous pouvez changer .scaleAspectFit (UIViewContentModeScaleAspectFit) en .scaleAspectFill (UIViewContentModeScaleAspectFill) pour définir un mode de remplissage d'aspect
la source
J'ai eu des problèmes avec l'image qui ne se redimensionnait pas proportionnellement, donc la façon dont je l'ai corrigée utilisait des encarts de bord.
la source
Cela peut maintenant être fait via les propriétés UIButton d'IB. La clé est de définir votre image comme arrière-plan, sinon cela ne fonctionnera pas.
la source
En développant la réponse de Dave, vous pouvez définir tous
contentMode
les boutonsimageView
dans IB, sans aucun code, en utilisant les attributs d'exécution:1
signifieUIViewContentModeScaleAspectFit
,2
signifieraitUIViewContentModeScaleAspectFill
.la source
Si vous souhaitez simplement réduire l'image de votre bouton:
la source
1 - Effacer le texte par défaut du bouton (important)
2 - définir l'alignement comme l'image
3 - définir le mode de contenu comme l'image
la source
J'ai une méthode qui le fait pour moi. La méthode prend
UIButton
et adapte l'aspect de l'image.la source
La solution la plus propre consiste à utiliser la mise en page automatique . J'ai abaissé la priorité de résistance à la compression du contenu de mon
UIButton
et défini l'image (pas l'image d' arrière-plan ) via Interface Builder . Après cela, j'ai ajouté quelques contraintes qui définissent la taille de mon bouton (assez complexe dans mon cas) et cela a fonctionné comme un charme.la source
Background Image
assurez-vous que vous avez défini l'image sur la propriété Image, mais pas sur l'arrière-plan
la source
L'image d'arrière-plan peut en fait être définie pour mettre à l'échelle le remplissage d'aspect assez facilement. Juste besoin de faire quelque chose comme ça dans une sous-classe de UIButton:
la source
Swift 5.0
la source
Pour Xamarin.iOS (C #):
la source
Il vous suffit de définir le mode de contenu de UIButton imageview pour trois événements. -
Nous avons le code pour trois événements bcoz tout en mettant en évidence ou en sélectionnant si la taille du bouton est CARRÉE et la taille de l'image est un rectangle, alors il affichera une image carrée au moment de la mise en évidence ou de la sélection.
Je suis sûr que cela fonctionnera pour vous.
la source