Je crée un clavier personnalisé et je dois centrer l'image de l'icône de décalage dans le bouton de décalage. L'image est 100px x 100px.
Cependant, le cadre du bouton dans portrait est 36pt x 38pt
, et dans paysage, il est 68pt x 32pt
. J'ai essayé d'utiliser la propriété incrustée d'image de bouton pour centrer l'image. Cependant, ce n'est pas le cas.
Je me suis essayé et définir l'image insère Edge à (25,25,25,25)
, l'image est centrée dans les deux tailles. Cependant, l'icône devient trop petite pour être vue.
shiftButton.setImage(UIImage(named: "shift"), forState: .Normal)
shiftButton.imageEdgeInsets = UIEdgeInsetsMake(0,0,0,0)
Je fais le bouton par programmation. Et j’ai besoin du bouton pour redimensionner en conservant son rapport hauteur/largeur, c’est-à-dire 1:1
. Sa largeur ou hauteur maximale est toujours liée à la hauteur du bouton lui-même. La largeur/hauteur de l'image doit être au maximum de la hauteur du bouton. Et, il ne faut en aucun cas s'étirer pour déformer l'icône. Cependant, le bouton lui-même peut s'étirer.
J'ai besoin que l'image soit mise à l'échelle en fonction du cadre du bouton tout en maintenant son rapport d'aspect. Et, il peut réduire ou augmenter, mais devrait toujours conserver le ratio d'aspect 1: 1.
Des suggestions pour résoudre ce problème?
Finalement, une solution est apparue. Vous devez définir le mode de contenu pour l'image à l'intérieur du bouton UIButton.
La solution consiste à mettre à jour la contentMode
de la Image
lorsque vous utilisez une image de premier plan dans un bouton avec la contentMode
de la UIButton
.
shiftButton.contentMode = .Center
shiftButton.imageView?.contentMode = .ScaleAspectFit
Définissez le mode de contenu du bouton sur Center
:
shiftButton.contentMode = .Center