タイトルテキストに従ってボタンの画像を配置することについては多くのスレッドがありますが、ボタンの右側に画像を配置するだけでは何も見つかりません。
これは効果がありません:
button.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 50);
ボタンの画像をどのように右揃えできますか?ストーリーボードでできますか?
ボタンの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
それを行うにはいくつかの異なるオプションがあります。
semanticContentAttribute
を使用
button.semanticContentAttribute = .forceRightToLeft
インターフェイス(ストーリーボード)レイアウトからセマンティック属性を設定することもできます。
orこのスナップショットに示すように、UIButtonとUIImageを含むUIViewを使用します。
これにより、ボタンのアクション、プロパティの処理が簡単になり、要件に応じて画像の位置とサイズをカスタマイズできます。これを試して。
Swiftでこれを行うクリーンな方法
button.semanticContentAttribute = .forceRightToLeft
お役に立てれば
デフォルトのセマンティック、つまり未指定または左から右に強制する
button.imageEdgeInsetsで次のように設定します
UIEdgeInsets(上:0、左:self.view.frame.size.width-(画像サイズ+配置スペース)、下:0、右:0)
これにより、ビューのサイズに関係なく、常にボタンの右側から画像が整列されるようになります。
簡単な方法
拡張機能を使用して、カスタムオフセットを使用して右側に画像を設定する
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
}
}
以下のコードを試してください:
btn.contentHorizontalAlignment = .right
ちょうどこのような:
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
それは私のために働いています:
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)
これは私が設定して働いた:
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
次に、内側の画像について、右のインセットを0に設定します。
button.imageEdgeInsets = UIEdgeInsetsMake(10.0, 10.0, 10.0, 0);