2017-10-02 12 views
0
button.setTitle("Like", for: .normal) 
button.setTitleColor(UIColor.rgb(red: 143, green: 150, blue: 163), for: .normal) 
button.setImage(UIImage(named:"like"), for: .normal) 
button.titleEdgeInsets = UIEdgeInsets(top: 0, left: 8 , bottom:0, right: 0) 
button.imageView?.contentMode = .scaleAspectFit 

addConstraintsWithFormat(format: "H:|[v0]|", views: likeButton) 
addConstraintsWithFormat(format: "V:|[v0(44)]|", views:likeButton) 

button.setImage(UIImage(named:"like"), for: .normal)」の行を削除すると、タイトルが正しく表示されます。タイトルと画像の両方を同時に表示できますか?ボタン用の画像を作成すると、ボタンのタイトルは表示されなくなります。

+0

ご縁のインセットは、最も可能性の高いタイトルが消えて引き起こしています。 40のエッジ挿入図はかなり極端です! – jervine10

+0

まだ仕事がありません – ismail1983

+0

実際の画像の大きさはどれくらいですか? – jervine10

答えて

1

UIButtonのサブクラスを作成し、

class MyButton : UIButton { 
    override func titleRect(forContentRect contentRect: CGRect) -> CGRect { 
     return CGRect(x: 0, y: self.bounds.size.height/2, width: self.bounds.size.width/2, height: self.bounds.size.height) 
    } 

    override func imageRect(forContentRect contentRect: CGRect) -> CGRect { 
     return CGRect(x: (self.bounds.size.width/2 + 5), y: self.bounds.size.height/2, width: (self.bounds.size.width/2 - 5), height: self.bounds.size.height) 
    } 
} 

タイトルと画像について計算RECTはそう関係なくUIButtonは、彼らが計算どおりに自分のサイズに合わせて調整しますがかかりますどのようなサイズUIButtonの境界に関連していない上書き。

下の画像のabcdはタイトルです。右側に表示されているものはボタンのタイトル画像です。

enter image description here

落とし穴

UIButton Sに関して、彼らは彼らに十分な自動レイアウト制約がない限り、彼らは直接/間接的に決定したタイトルとタイトル画像のナレーションサイズを取ることを意味する固有のサイズそのフレーム。

巨大な画像をボタンのタイトルとして設定するか、非常に小さな画像をボタンのタイトル画像として設定すると、幅が&の高さまたは先頭と下端の制約がない限り、それぞれ非常に大きなボタンまたは非常に小さいボタンが表示されることがあります。

ボタンの境界を基準にしてタイトルとイメージの矩形が計算されるため、ボタンのサイズを正しく決定するか、またはボタンのサイズを決める完全なサイズのイメージを持っているかどうかを確認するのに非常に重要です適切なサイズ。

ハッピーコーディング

関連する問題