有没有办法为 的背景图像添加某种偏移量UIButton
?
我有一些自定义背景图片UIButton
。这些图像在有效按钮区域周围确实有一个 5 像素的阴影区域。当我使用这些图像时,我必须移动标题标签,调整框架并进行一些计算以正确放置按钮。
理想情况下,我想在该图像(或UIButton
垂直。
在 html 中,我会在按钮 div 上设置固定大小,然后通过指定背景位置来偏移背景图像。
iOS有类似的东西吗?
设置setTitleEdgeInsets:
或setImageEdgeInsets:
似乎对an的背景图像没有任何影响,UIButton
但仅对图像(和标题)有影响。
我最终覆盖-(CGRect)backgroundRectForBounds:(CGRect)bounds
了我将边界矩形膨胀所需的数量(在我的情况下为 5)。
这是一个老问题,但我认为答案可能会更好。一种方法是抓住你的按钮,然后抓住它的图像。因此,如果您在 IB 中设置了按钮,它在 objc 中可能如下所示:
UIImage *i = [self.button backgroundImageForState:UIControlStateNormal];
如果你是在代码中完成的,那么你已经拥有了这些东西!
然后你想设置你的对齐矩形来调整差异。
i = [i imageWithAlignmentRectInsets:UIEdgeInsetsMake(0, 0, -5, -5)];
(上、左、下、右)。
现在重新设置按钮图像。
[self.button setBackgroundImage:i forState:UIControlStateNormal];
自动布局使用对齐矩形来排列东西。您可能需要更改对齐上的一些常量才能进行微调。
刚刚更新 SmileBot 答案:
以编程方式创建一个按钮(在我的情况下为 UIBarButtonItem)并设置其背景图像偏移(顶部边缘 +2 px):
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())
在 UIbutton 的属性检查器中,您可以设置标题/图像插入值。
您可以同时使用两者setTitleEdgeInsets:
并setImageEdgeInsets:
获得所需的结果。
试试这个偏移量
[buttonName setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 12.0, 0.0, 0.0)];