I'd like to create a UIButton, but with a larger tap area than the image. (Ex: 40x40 button, but the image is only 20x20, centered).
Is that what imageEdgeInsets
is for?
I've set it both programatically: (This is in the UIView which contains my button)
- (void)awakeFromNib {
[_plusButton setImageEdgeInsets:UIEdgeInsetsMake(10, 10, 10, 10)];
[_plusButton setContentMode:UIViewContentModeCenter];
}
And from storyboard
But neither of them seem to work.
Got it I think that you set your image as a background image of the button, set it as a image then it will never stretches(remains in it original shape) and imageEdgeInsets
will works on it properly.
Like:
Here is a simple example of how to use imageEdgeInsets This will make a 20x20 button with a hittable area 10 pixels bigger all the way around (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 programmatically.
buttonOutlet.setImage(UIImage(name: "iconWhite"), for: .normal)
buttonOutlet.imageEdgeInsets = UIEdgeInsets(top: 10, left:10, bottom: 10, right: 10)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.