web-dev-qa-db-ja.com

ボタン画像をUIButtonの右端に揃えます

タイトルテキストに従ってボタンの画像を配置することについては多くのスレッドがありますが、ボタンの右側に画像を配置するだけでは何も見つかりません。

これは効果がありません:

button.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 50);

ボタンの画像をどのように右揃えできますか?ストーリーボードでできますか?

23
soleil

セマンティック:ビューでの右から左への強制は私のために働く enter image description here

49
Gilad Brunfman

ストーリーボード

[属性]タブ> [画像]で[コンテンツエッジ]タブが選択されていることを確認します。

1

次に、「Left」プロパティを正しくないものに変更します。これはプログラムで行うことです。つまり、左からnのパディング

UIEdgeInsetsMake = TOP |左|ボトム|右

プログラムで:

button.imageEdgeInsets = UIEdgeInsetsMake(0, 100, 0, 0);

注:画像を参照する場所によっては、タイトルのインセットも変更する必要がある場合があります

17
soulshined

ボタンのUIImageViewの制約を更新するトリッキーな方法を見つけました

これを試して

button.imageView?.trailingAnchor.constraint(equalTo: button.trailingAnchor, constant: -8.0).isActive = true
button.imageView?.centerYAnchor.constraint(equalTo: button.centerYAnchor, constant: 0.0).isActive = true

ただし、これを追加して制約を有効にすることを忘れないでください

button.translatesAutoresizingMaskIntoConstraints = false
button.imageView?.translatesAutoresizingMaskIntoConstraints = false
16
Simon K. Gerges

それを行うにはいくつかの異なるオプションがあります。

semanticContentAttributeを使用

button.semanticContentAttribute = .forceRightToLeft

インターフェイス(ストーリーボード)レイアウトからセマンティック属性を設定することもできます。

enter image description here


orこのスナップショットに示すように、UIButtonとUIImageを含むUIViewを使用します。

  • UIViewで画像の右側を設定し、ユーザーの操作を無効にして、ユーザーのアクション/タップがボタンに渡されるようにします。
  • UIViewでUIViewと同じサイズのボタンを追加し、背景色を透明にし、画像をカバーします。
  • このスナップショットに示すように、ボタンのコンテンツオフセットを設定します。

enter image description here

これにより、ボタンのアクション、プロパティの処理が簡単になり、要件に応じて画像の位置とサイズをカスタマイズできます。これを試して。

13
Krunal

Swiftでこれを行うクリーンな方法

button.semanticContentAttribute = .forceRightToLeft

お役に立てれば

13

デフォルトのセマンティック、つまり未指定または左から右に強制する

button.imageEdgeInsetsで次のように設定します

UIEdgeInsets(上:0、左:self.view.frame.size.width-(画像サイズ+配置スペース)、下:0、右:0)

これにより、ビューのサイズに関係なく、常にボタンの右側から画像が整列されるようになります。

5
Tharzeez

簡単な方法

拡張機能を使用して、カスタムオフセットを使用して右側に画像を設定する

   extension UIButton {
    func addRightImage(image: UIImage, offset: CGFloat) {
        self.setImage(image, for: .normal)
        self.imageView?.translatesAutoresizingMaskIntoConstraints = false
        self.imageView?.centerYAnchor.constraint(equalTo: self.centerYAnchor, constant: 0.0).isActive = true
        self.imageView?.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -offset).isActive = true
    }
}
3
Musa almatri

以下のコードを試してください:

btn.contentHorizontalAlignment = .right
2
Dhaval H. Nena

ちょうどこのような:

btn.imageView?.translatesAutoresizingMaskIntoConstraints = false
btn.imageView?.centerYAnchor.constraint(equalTo: btn.centerYAnchor, constant: 0.0).isActive = true
btn.imageView?.trailingAnchor.constraint(equalTo: btn.trailingAnchor, constant: 0.0).isActive = true
btn.imageView?.contentMode = .right
1
Charly berthet

それは私のために働いています:

self.acceptButton.setImage(UIImage(named: image), for: UIControl.State.normal)
self.acceptButton.semanticContentAttribute = .forceRightToLeft
self.acceptButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 9, bottom: 0, right: 0)
1
Eduardo Parada

これは私が設定して働いた:

button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;

次に、内側の画像について、右のインセットを0に設定します。

button.imageEdgeInsets = UIEdgeInsetsMake(10.0, 10.0, 10.0, 0);
0
coletrain

画像を右に揃えるには、「セマンティック」オプションが最適で、「強制的に右から左へ」のように見えます。さらに、もう1つ追加します。このオプションにより、ボタンの画像の形状を保持できます。 User Defined Runtime Attributes

0
winner.ktw