中心UIButton图像与插图

时间:2014-06-02 09:02:59

标签: ios objective-c uibutton uiedgeinsets

我想创建一个UIButton,但是比图像有更大的拍子区域。 (例如:40x40按钮,但图像仅为20x20,居中)。

这是imageEdgeInsets的用途吗?

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

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

从故事板

enter image description here

但它们似乎都不起作用。

3 个答案:

答案 0 :(得分:18)

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

像:

enter image description here

答案 1 :(得分:7)

以下是如何使用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)

答案 2 :(得分:4)

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

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