Je voudrais créer un bouton UIB, mais avec une zone de prise plus grande que l'image. (Ex: bouton 40x40, mais l'image est seulement 20x20, centrée).
Est-ce à cela que sert imageEdgeInsets
?
Je l'ai mis à la fois par programme: (C'est dans la vue UIV qui contient mon bouton)
- (void)awakeFromNib {
[_plusButton setImageEdgeInsets:UIEdgeInsetsMake(10, 10, 10, 10)];
[_plusButton setContentMode:UIViewContentModeCenter];
}
Et du storyboard
Mais aucun d'eux ne semble fonctionner.
Je pense que vous définissez votre image comme image d'arrière-plan du bouton, définissez-la comme une image, puis elle ne s'étirera jamais (reste dans sa forme d'origine) et imageEdgeInsets
fonctionnera correctement.
Comme:
Voici un exemple simple de la façon d'utiliser imageEdgeInsets Cela rendra un bouton 20x20 avec une zone de 10 pixels plus grand tout autour (40x40)
var expandHittableAreaAmt: CGFloat = 10
var buttonWidth: CGFloat = 20
var button = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
button.frame = CGRectMake(0, 0,
buttonWidth + expandHittableAreaAmt*2,
buttonWidth + expandHittableAreaAmt*2)
button.imageEdgeInsets = UIEdgeInsetsMake(expandHittableAreaAmt,
expandHittableAreaAmt, expandHittableAreaAmt, expandHittableAreaAmt)
button.setImage(UIImage(named: "buttonImage"), forState: .Normal) //20x20 image
button.addTarget(self, action: "didTouchButton:", forControlEvents: .TouchUpInside)
Swift 3 & 4 Solution par programme.
buttonOutlet.setImage(UIImage(name: "iconWhite"), for: .normal)
buttonOutlet.imageEdgeInsets = UIEdgeInsets(top: 10, left:10, bottom: 10, right: 10)