23

我想创建一个 UIButton,但点击区域比图像更大。(例如:40x40 按钮,但图像只有 20x20,居中)。

imageEdgeInsets是为了什么?

我已经以编程方式设置了它:(这是在包含我的按钮的 UIView 中)

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

从情节提要

在此处输入图像描述

但它们似乎都不起作用。

4

3 回答 3

20

明白了,我认为您将图像设置为按钮的背景图像,将其设置为图像,然后它将永远不会拉伸(保持原始形状)并且imageEdgeInsets可以正常工作。

像:

在此处输入图像描述

于 2014-06-02T09:15:01.180 回答
11

Swift 3 & 4以编程方式解决方案。

buttonOutlet.setImage(UIImage(name: "iconWhite"), for: .normal)
buttonOutlet.imageEdgeInsets = UIEdgeInsets(top: 10, left:10, bottom: 10, right: 10)
于 2018-02-09T12:54:15.640 回答
9

这是一个如何使用 imageEdgeInsets 的简单示例 这将使一个 20x20 按钮的可点击区域变大 10 像素(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)
于 2014-11-10T20:49:58.917 回答