如何最好地创建一个左对齐图标按钮,文本以其余区域为中心

时间:2017-06-08 08:37:43

标签: ios swift uibutton interface-builder

我需要一个看起来像这样的按钮:

example button

现在我去了一个带有两个按钮的视图。但问题是我可以将两个单独的按钮连接到同一个插座,或者将UITapGestureRecognizer添加到容器视图。

我选择了第二个选项,因为我认为它会更干净,但只有当我禁用按钮时才能使用(因此禁用按下动画)。

我是否在正确的轨道上,当UITapGestureRecognizer调用我的方法时,我是否应该找到触发按钮动画的方法?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

您想要使用单个UIButton并调整imageEdgeInsets& titleEdgeInsets。

对于Swift示例:

extension UIButton {
    func centerTextAndImage(spacing: CGFloat) {
        let insetAmount = spacing / 2
        imageEdgeInsets = UIEdgeInsets(top: 0, left: -insetAmount, bottom: 0, right: insetAmount)
        titleEdgeInsets = UIEdgeInsets(top: 0, left: insetAmount, bottom: 0, right: -insetAmount)
        contentEdgeInsets = UIEdgeInsets(top: 0, left: insetAmount, bottom: 0, right: insetAmount)
    }
}

答案 1 :(得分:0)

UIButton的尺寸检查器标签顶部有一个Insets部分。使用标题插入和图像插入的插入值来实现所需的结果。

enter image description here

您无需在视图中使用多个按钮或点按手势即可实现此目的。只需一个按钮即可。