2017-02-25 59 views
0

我一直在嘗試對齊按鈕左側的圖像,同時也將一些文本放置在按鈕的中心。我一直在關注這個堆棧溢出帖子:Left-align image and center text on UIButtonios - 左對齊圖像和在UIButton中心放置文本

我跟着其中一個最適合我的答案。下面是這個問題的答案代碼:

@IBDesignable class LeftAlignedButton: UIButton { 
    override func layoutSubviews() { 
     super.layoutSubviews() 

     if let image = imageView?.image { 

      let margin = 30 - image.size.width/2 
      let titleRec = titleRect(forContentRect: bounds) 
      let titleOffset = (bounds.width - titleRec.width - image.size.width - margin)/2 


      contentHorizontalAlignment = UIControlContentHorizontalAlignment.left 
      imageEdgeInsets = UIEdgeInsetsMake(0, margin, 0, 0) 
      titleEdgeInsets = UIEdgeInsetsMake(0, titleOffset, 0, 0) 
     } 

    } 
} 

即使這讓我非常接近我想要的結果並不完全做到我所期待的。

這裏是我當前的按鈕看起來像:

Image for how Buttons currently look

正如你可能會看到在谷歌按鈕上的文本,即使集中於特定的按鈕不與Facebook的按鈕是如何文本對應被集中。此外,圖像有點太大,但我不知道如何讓它們變小。

這裏是我尋找的結果是:

Image for How I want my Buttons to look

最後,我有問題是如何正確居中谷歌按鈕的文本,它與Facebook的按鈕設計和對應我如何使圖像變小。

回答

0

@Rohan問題是let margin = 30 - image.size.width/2。您正在使用圖像寬度來查找margin.This圖像(facebook and google)大小是不同的(我假設)。所以根據你的代碼,標籤左邊距必須隨圖像寬度而改變。所以,如果你想實現你必須根據你的代碼保持兩個圖像大小相似。