with under right and ios objective-c uibutton uiedgeinsets

ios - under - Imagen de centro UIButton con recuadro.



uibutton title under image swift (3)

Me gustaría crear un UIButton, pero con un área de tap más grande que la imagen. (Ejemplo: botón 40x40, pero la imagen es solo 20x20, centrada).

¿Para eso es que es imageEdgeInsets ?

Lo he configurado programáticamente: (Esto está en la vista UIV que contiene mi botón)

- (void)awakeFromNib { [_plusButton setImageEdgeInsets:UIEdgeInsetsMake(10, 10, 10, 10)]; [_plusButton setContentMode:UIViewContentModeCenter]; }

Y desde el storyboard.

Pero ninguno de ellos parece funcionar.


Este es un ejemplo simple de cómo usar imageEdgeInsets. Esto hará que un botón 20x20 con un área de golpeo sea 10 píxeles más grande en todos los sentidos (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)


Lo tengo, creo que configuras tu imagen como una imagen de fondo del botón, la configuras como una imagen, entonces nunca se estira (permanece en su forma original) y imageEdgeInsets funcionará correctamente.

Me gusta:


Solución Swift 3 y 4 programáticamente.

buttonOutlet.setImage(UIImage(name: "iconWhite"), for: .normal) buttonOutlet.imageEdgeInsets = UIEdgeInsets(top: 10, left:10, bottom: 10, right: 10)