Ios UIButton背景图像偏移

Ios UIButton背景图像偏移,ios,uibutton,offset,Ios,Uibutton,Offset,有没有办法给UIButton的背景图像添加某种偏移量 我已经为ui按钮定制了一些背景图像。这些图像在有效按钮区域周围有一个5像素的阴影区域。当我使用这些图像时,我必须移动标题标签,调整框架并进行一些计算以正确放置按钮 理想情况下,我希望在该图像(或ui按钮)上设置类似于偏移量(x=-5px,y=-5px)的值,以便当我将图像指定为ui按钮的背景时,它会水平和垂直移动该偏移量 在html中,我会在按钮div上设置一个固定的大小,然后通过指定背景位置来偏移背景图像 iOS也有类似的功能吗?试试这个功

有没有办法给
UIButton
的背景图像添加某种偏移量

我已经为
ui按钮
定制了一些背景图像。这些图像在有效按钮区域周围有一个5像素的阴影区域。当我使用这些图像时,我必须移动标题标签,调整框架并进行一些计算以正确放置按钮

理想情况下,我希望在该图像(或
ui按钮
)上设置类似于偏移量(x=-5px,y=-5px)的值,以便当我将图像指定为ui按钮的背景时,它会水平和垂直移动该偏移量

在html中,我会在按钮div上设置一个固定的大小,然后通过指定背景位置来偏移背景图像

iOS也有类似的功能吗?

试试这个功能

[buttonName setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 12.0, 0.0, 0.0)];

在UIbuton的属性检查器中,可以设置标题/图像插入值


您可以同时使用
setTitleEdgeInsets:
setImageEdgeInsets:
来获得所需的结果。

设置
setTitleEdgeInsets:
setImageEdgeInsets:
似乎对
ui按钮的背景图像没有任何影响,但仅对图像(以及标题)


我最终覆盖了
-(CGRect)backgroundRectForBounds:(CGRect)bounds
,在这里,我将bounds矩形按所需的数量膨胀(在我的例子中为5)。

这是一个老问题,但我认为答案可能更好。一种方法是抓住你的按钮,然后抓住它的图像。因此,如果您在IB中设置了按钮,则在objc中可能会出现如下情况:

UIImage*i=[self.button backgroundImageForState:UIControlStateNormal]

如果你是用代码做的,那么你已经有了这些东西

然后您需要设置对齐矩形以调整差异

i=[i imagewithalignmentrectinests:UIEdgeInsetsMake(0,0,-5,-5)]

(上、左、下、右)

现在将按钮图像设置回原来的位置

[self.button setBackgroundImage:i forState:UIControlStateNormal];

“自动布局”使用对齐矩形将对象对齐。您可能需要更改路线上的某些常量以进行微调。

只需更新SmileBot答案:

以编程方式创建一个按钮(在我的例子中是一个UIBarButtonItem),并设置其背景图像的偏移量(+2 px上边缘):

斯威夫特3
您可以使用按钮标题/内容插图。这是最好的答案。创建UIButton的子类并覆盖
-(CGRect)backgroundRectForBounds:(CGRect)bounds
let image = UIImage(named: "yourimagename")!.withAlignmentRectInsets(UIEdgeInsetsMake(2, 0, 0, 0))
let button = UIButton(type: .custom)
button.frame = CGRect(x: 0.0, y: 0.0, width: image.size.width, height: image.size.height)
button.setBackgroundImage(image, for: UIControlState())