UIButton背景图像偏移

时间:2013-10-21 10:22:54

标签: ios uibutton offset

有没有办法为UIButton的背景图片添加某种偏移?

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

理想情况下,我想在该图像(或UIButton)上设置类似偏移(x = -5px,y = -5px)的内容,以便在分配时图像作为UIButton的背景,它被水平和垂直移动。

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

iOS有类似内容吗?

6 个答案:

答案 0 :(得分:13)

设置setTitleEdgeInsets:setImageEdgeInsets:似乎对UIButton背景图片没有任何影响,但仅限于图片(和标题)。

我最终覆盖了-(CGRect)backgroundRectForBounds:(CGRect)bounds,其中我按照所需的金额(在我的情况下为5)给边界矩形充气。

答案 1 :(得分:12)

这是一个老问题,但我认为答案可能更好。一种方法是获取按钮,然后抓住它的图像。所以,如果你在IB中设置按钮,它可能在objc中看起来像这样:

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

如果你在代码中做到了,那么你已经拥有了这些东西!

然后你想设置你的对齐矩形来调整差异。

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

(上,左,下,右)。

现在重新设置按钮图像。

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

自动布局使用对齐方式来排列。您可能需要更改对齐上的某些常量以进行微调。

答案 2 :(得分:2)

刚刚更新SmileBot答案:

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

Swift 3

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())

答案 3 :(得分:1)

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

enter image description here

答案 4 :(得分:1)

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

答案 5 :(得分:0)

尝试使用偏移量

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