web-dev-qa-db-ja.com

UIButtonのテキスト(パディング)をプログラムでSwift

まだ学習中SwiftとObjective-Cがわからない。ボタンのテキストをプログラムで変更するには、titleEdgeInsetsを使用する必要があるが、実際には使用方法がわからない。

下部と左右両方のボタン(パディング)のテキストを変更したいと思います。

回答や例に感謝します!

39
KellysOnTop23

引き続き有効:iOS 12/Xcode 10/Swift 4.2/OSX 10.13.2


iOS 9.1/Xcode 7.1/Swift 2.1/OSX 10.10.5

メソッドtitleEdgeInsetsは私にとってはうまくいきませんでした。ボタンのフレームがテキストをしっかりとハグし(フレームサイズを指定しませんでした)、フレームの背景色が赤になります。実行後:

 myButton.titleEdgeInsets = UIEdgeInsetsMake(10,10,10,10)

赤い背景は各辺で内側に10ピクセル縮小しました。これは、テキストの一部が赤い背景の外側にあることを意味します。負の値を使用しても、元のフレームサイズには影響しませんでした。

テキストをパディングし、効果的にフレームを大きくすることができました:

myButton.contentEdgeInsets = UIEdgeInsetsMake(5,5,5,5) 
110
7stud

iOS 10およびSwift 3の例

IOS 11およびSwift 4。

refineButton.contentEdgeInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
48
Dev2rights

これらのコード行を実行することで、上、左、右、下からパディングを追加できます。

button.titleEdgeInsets.left = 10; // add left padding.
button.titleEdgeInsets.right = 10; // add right padding.
button.titleEdgeInsets.top = 10; // add top padding.
button.titleEdgeInsets.bottom = 10; // add bottom padding.
26
Ali Raza

ストーリーボードでこれを行うこともできます。
enter image description here

16
Nik Kov

IOS 9.1/Xcode 7.1/Swift 2.1の場合

@IBOutlet weak var ratingButton: UIButton!

override func viewDidLoad() {
    ratingButton.contentEdgeInsets = UIEdgeInsets(top:15,right:10,bottom:15,left:10)

    super.viewDidLoad()
}
4
Hannes