UIButton:以编程方式在图像顶部叠加标题

时间:2017-08-15 18:00:31

标签: ios swift uikit

如何以编程方式在按钮图像的顶部添加按钮标题,并将它们放置在相互重叠的按钮框架中的死点?

let button = UIButton()

button.setImage(coolpic, for .normal)
button.contentMode = .center
button.setTitle("tap me", for: .normal)

// a bunch of constraints and styling that define the frame

我是否必须将图像设置为背景图像?我是否需要创建UILabel作为按钮标题并将其添加为按钮的子视图?

谢谢!

2 个答案:

答案 0 :(得分:0)

你可以尝试:

className

答案 1 :(得分:0)

你可以用图像插入来做到这一点,但我喜欢使用扩展来做这样的事情 - 这样我就可以在我的应用程序的任何地方使用它们而无需子类化。这是我在UIButton中设置图像位置的代码:

extension UIButton {

    func setImagePosition(at pos:ButtonImagePosition, withAdjustment adj:CGFloat?) {

        let _adj:CGFloat = (adj != nil) ? adj! : 0
        let width = frame.size.width
        var imgWidth = self.imageView?.frame.size.width 

        switch pos {
        case .center: 
            self.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
        case .right: 
            imgWidth = imgWidth! - _adj
            self.imageEdgeInsets = UIEdgeInsets(top: 0, left: width - imgWidth!, bottom: 0, right: 0)
        case .left: 
            self.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: width + imgWidth!)
        }
    }
}

enum ButtonImagePosition {
    case left
    case right
    case center
}

然后我将其称为如下

button.setImagePosition(at: .right, withAdjustment: nil)