2017-08-15 91 views
0

如何以編程方式將按鈕標題疊加到按鈕圖像的頂部,並將它們都定位在相互重疊的按鈕框架中的死點?UIButton:以編程方式在圖像頂部疊加標題

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作爲按鈕標題並將其添加爲按鈕的子視圖?

謝謝!

+0

我假設(我從來沒有嘗試過這一點),你已經通過了使用帶有偏移量的罐裝'UIButton'等的努力(如果沒有,爲什麼?)所以在我看來,一個簡單的子類應該工作。你有沒有考慮過這個 – dfd

+0

使用這個button.titleLabel.textAlignment = .Center並將背景圖片添加到uibutton –

+0

我應該先說說我是Swift的新手。但這些建議正是我所期待的。 –

回答

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) 
0

你可以嘗試:

let button = UIButton() 
    button.setImage(UIImage(named:"yourImage.png")?, for: .normal) 

    button.setTitle("MyTitle", for: .normal) 
    button.titleLabel?.font = button.titleLabel?.font.withSize(15) 
    button.titleLabel?.textAlignment = .center 
相關問題