调整UIButton上的背景图像大小

时间:2016-12-14 19:39:14

标签: ios swift uibutton

我正在尝试添加"日历日"图像在可点击的UI按钮上包围一些文本,如下所示:

let button = UIButton()
let X_Offset : CGFloat = (95 * CGFloat(buttonCount) ) + 10
let scrollHeight = scrollView.bounds.height

button.frame = CGRect(x: X_Offset, y: scrollHeight/6, width: 70, height: 60)
let buttonText = event.startTime.toShortDayOfWeekString() + "\n" + event.startTime.toShortDayOfMonthString()
button.titleLabel!.lineBreakMode = .byWordWrapping
button.titleLabel!.textAlignment = .center
button.setTitle(buttonText, for: .normal)
button.tag = i

button.backgroundColor = CompanyColor.Red.color
let image = UIImage(named: "calendarDay")
button.setBackgroundImage(image, for: .normal)
button.titleLabel?.font = UIFont(name: "Roboto", size: 14)
button.layer.cornerRadius = 8
button.clipsToBounds = true

但是图像对文本的影响有点过分了: encroaching image in uibutton 如何让背景图像略微放大并为文本留下足够的空隙?

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是为imageEdgeInsets设置UIButton。通过设置这些属性,您可以在默认位置之外移动图像。你必须四处玩才能得到你想要的结果。

有两种方法可以做到这一点。一个是使用Interface Builder,另一个是以编程方式。接口构建器是我猜的最简单的方法。下图显示了如何为UIButton设置这些属性。

Edit these properties to get your desired result

或尝试像这样以编程方式使用

button.imageEdgeInsets = UIEdgeInsets(top: -10, left: 32, bottom: -10, right: 50)

您可以像这样移动标题

button.titleEdgeInsets = UIEdgeInsets(top: 0, left:0, bottom: 0, right: 20)

注意:如果你有动态尺寸按钮,那么设置UIEdgeInsets可能会有不同的结果,例如对于不同的屏幕尺寸。始终确保所有屏幕尺寸都符合预期。