web-dev-qa-db-ja.com

UIButtonテキスト配置センターを作成する方法は? IBを使用する

IBを中心として使用してUIButtonのタイトルを設定できません。タイトルは複数行です。
このように与えています
enter image description here

しかし、私はこのようにしたい
enter image description here

私はこれにスペースを与えましたが、私はそれをしたくありません。場合によっては正確に位置合わせされておらず、位置合わせを設定するUILabelのプロパティがあることは知っていますが、そのためのコードは書きたくありません。IBからすべてを設定したいだけです。

ありがとう

133

解決策1

ストーリーボードでキーパスを設定できます

テキストを複数行のタイトルに設定します。 hello  +  multiline

押す必要があります  +  テキストを次の行に移動します。

enter image description here

次に、キーパスを追加します

titleLabel.textAlignmentNumberおよび値1として、1NSTextAlignmentCenterを意味します
titleLabel.numberOfLinesNumberおよび値00は任意の行数を意味します

enter image description here

これはIB/Xcodeには反映されませんが、実行時に中央に配置されます(デバイス/シミュレーター)

Xcodeの変更を確認するには、次の手順を実行する必要があります(これらの手順をスキップできることを忘れないでください)。

  1. UIButtonをサブクラス化して、ボタンを設計可能にします。

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}
    
  2. 変更可能なボタンにこの設計可能なサブクラスを割り当てます。

Showing how to change the class of the button using Interface Builder

  1. 正しく実行された場合、Designablesの状態が「最新」の場合(数秒かかる場合があります)、IBに視覚的な更新が表示されます。

Comparing the designable and default button in Interface Builder



Solution2

コードを書きたい場合は、長いプロセスを実行します

1.ボタンのIBOutletを作成します
2.viewDidLoadでコードを書く

btn.titleLabel.textAlignment = .Center
btn.titleLabel.numberOfLines = 0


Solution3

Xcodeの新しいバージョン(私の場合はxcode 6.1)には、title属性のプロパティがあります
Attributedを選択してから、テキストを選択し、下の中央オプションを押します

P.S。テキストが複数行になっていないため、

btn.titleLabel.numberOfLines = 0

enter image description here

83

これにより、期待どおりの結果が得られます。

Objective-C:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

IOS 6以降の場合は

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

tyler53の答え で説明されているように

スイフト:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center
183
RGML

次の行を使用します。

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

これにより、コンテンツが(水平方向に)中央に配置されます。

また、ラベル内のテキストも中央に設定する場合は、次を使用します。

[labelOne setTextAlignment:UITextAlignmentCenter];

IBを使用する場合、XCode 4にリンクされている小さなサンプルをここに用意しましたが、十分な詳細を提供する必要があります(プロパティ画面の上にプロパティタブが表示されます。XCodeにも同じタブがあります。 3.x): enter image description here

103
Joetjah

UIButtonの場合、以下を使用する必要があります-

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
26
Sirji

IOS 8およびSwiftの場合

btn.titleLabel.textAlignment = NSTextAlignment.Center

または

btn.titleLabel.textAlignment = .Center

16
Eduardo Fiorezi

現在iOS 6以降を使用している人のために、UITextAlignmentCenterは廃止されました。 NSTextAlignmentCenterになりました

例:mylabel.textAlignment = NSTextAlignmentCenter;は完全に機能します。

12
tyler53

Swift 4の場合、xcode 9

myButton.contentHorizontalAlignment = .center
9
Shan Ye

BtnがUIButtonを参照すると仮定すると、複数行のキャプションを水平方向の中央に変更するには、iOS 6以降で次のステートメントを使用できます。

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;
7
user1862723

UITextAlignmentCenterはiOS6で廃止されました

代わりに、次のコードを使用できます。

btn.titleLabel.textAlignment=NSTextAlinmentCenter;

4
user2223924

Swift 3.0の場合

btn.titleLabel?.textAlignment = .center
3

実際には、インターフェイスビルダーで実行できます。

[タイトル]を[属性]に設定してから、中央揃えを選択する必要があります。

3

このようにしてみてください:

yourButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
2
Bobby

Swift 4の場合:

@IBAction func myButton(sender: AnyObject) {
    sender.titleLabel??.textAlignment = NSTextAlignment.center
    sender.setTitle("Some centered String", for:UIControlState.normal)
}
2

ストーリーボードからこれを行うことができます。ボタンを選択します。改行を「ワードラップ」に設定し、タイトル「プレーン」を「属性」に設定します。 「中央揃え」を選択します。この部分は重要です=> ...(詳細)ボタンをクリックします。そして、改行モードを「文字の折り返し」に選択します。

1

UIButtonはsetTextAlignmentをサポートしません。したがって、ボタンのテキストの配置にはsetContentHorizo​​ntalAlignmentを使用する必要があります

ご参考までに

[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
1
btmanikandan