UIButtonのTitleはデフォルトで中央揃えですが、なぜか左に寄ってしまうバグがあったのでコード上で中央揃えに設定しました。
何気に非常によく使います…!
環境
- Xcode 11.0
- Swift 5.1
ボタンのタイトル中央揃え
button.titleLabel?.textAlignment = NSTextAlignment.center
で設定。
ボタンのタイトル上下中央揃え
上下の位置も、下に寄ってしまっていたのでプロパティで設定。
button.titleLabel?.baselineAdjustment = .alignCenters
その他のプロパティ
その他のよく使うボタンタイトルに関するプロパティをまとめました。
(ボタンのタイトルはUILabelなので、UILabelのプロパティを使っているだけですが)
//Buttonのタイトルを左揃えにする
button.contentHorizontalAlignment = .left
//LabelやButtonのサイズに合わせてフォントサイズを可変にする
button.titleLabel?.adjustsFontSizeToFitWidth = true
button.titleLabel?.numberOfLines = 1
//縮小時の最小サイズを設定(文字がはみ出る場合は、この数値までは縮小される)
button.titleLabel?.minimumScaleFactor = 0.8
//lineBreakModeの設定
//表示できる部分のみを切り取る
button.titleLabel?.lineBreakMode = .byClipping
//複数行の場合、文字単位で折り返す
button.titleLabel?.lineBreakMode = .byCharWrapping
//複数行の場合、単語単位で折り返す
button.titleLabel?.lineBreakMode = .byWordWrapping
//文末を...で省略する
button.titleLabel?.lineBreakMode = .byTruncatingTail
//ボタンのタイトルラベル変更
button.setTitle("Change Title", for: .normal)
タイトルを左揃え(または右揃え)にする場合は、textAlignmentでは効かない場合がありcontentHolizontalAlignmentを使うことで反映されました。