9

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

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

理想情况下,我想在该图像(或UIButton垂直。

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

iOS有类似的东西吗?

4

6 回答 6

19

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

我最终覆盖-(CGRect)backgroundRectForBounds:(CGRect)bounds了我将边界矩形膨胀所需的数量(在我的情况下为 5)。

于 2013-10-22T08:14:46.960 回答
13

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

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

如果你是在代码中完成的,那么你已经拥有了这些东西!

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

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

(上、左、下、右)。

现在重新设置按钮图像。

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

自动布局使用对齐矩形来排列东西。您可能需要更改对齐上的一些常量才能进行微调。

于 2015-03-28T19:32:12.270 回答
3

刚刚更新 SmileBot 答案:

以编程方式创建一个按钮(在我的情况下为 UIBarButtonItem)并设置其背景图像偏移(顶部边缘 +2 px):

斯威夫特 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())
于 2017-09-06T14:35:49.087 回答
1

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

在此处输入图像描述

于 2013-10-21T10:35:40.840 回答
1

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

于 2013-10-21T10:47:35.617 回答
0

试试这个偏移量

[buttonName setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 12.0, 0.0, 0.0)];
于 2013-10-21T10:33:02.367 回答