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


139

IBを中心としてUIButtonのタイトルを設定できません。タイトルは複数行です。
このようにあげています
ここに画像の説明を入力してください

でも私はこのようにしたい
ここに画像の説明を入力してください

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

ありがとう


7
Kumar Rathor-コードで試してくださいself.yourButton.titleLabel.textAlignment = UITextAlignmentCenter;
Sagar R. Kothari

1
@Spark私はコードでこれを行う方法を知っていますが、私が欲しかったのは「IB」を使用して設定することです。
Inder Kumar Rathore 2013年

IBを使用して設定したいのですが。ただし、このようなプロパティにはコードを介してのみアクセスできます。
Sagar R. Kothari 2013年

IBに帰属させることでアクセスできますが、誰がそれを気にしますか?
Youssef Moawad、2015

@YoussefSamiはい、あなたは正しいですstackoverflow.com/a/5865500/468724
Inder Kumar Rathore

回答:


197

これはまさにあなたが期待していたことになります:

Objective-C:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

iOS 6以降の場合

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

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

迅速:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center

Swift 4.x以降

myButton.titleLabel?.textAlignment = .center

1
それ以降のバージョンのiOSではNSTextAlignmentになっています。
サリバン

4
このコードは機能しません。最善の答えは@joetjahですmyButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
Alberto Mier

8
質問では、Interface Builderのように、IBについて明示的に言及しています。コーディングが必要なため、これは正しい答えではありません
SwiftArchitect 2017

1
Swift 4: myButton.titleLabel?.textAlignment = .center
Lewis Black

'Center'は 'center'に名前が変更されました
ModusPwnens

106

次の行を使用します。

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

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

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

[labelOne setTextAlignment:UITextAlignmentCenter];

IBを使用したい場合は、XCode 4でリンクされている小さな例をここに示しますが、十分な詳細を提供する必要があります(また、そのプロパティ画面の上にプロパティタブが表示されます。XCodeにも同じタブがあります) 3.x): ここに画像の説明を入力してください


1
おかげで...しかし、私はそれをIBを通じて設定したくありません。:(それが私の最後の選択肢です...
インダークマールラトーレ

1
@Inder Kumar Rathore:問題ありません。IBで設定するには、ラベルをクリックしてから、属性インスペクタで[配置]を[中央]に設定します。私のIB(XCode 4)では、テキストの配置を示す3つのアイコンがあります。もちろん、真ん中のものを選択する必要があります。
Joetjah

スクリーンショットを送ってください...これはボタンのラベルですか、ライブラリからUILabelをドラッグしましたか?ボタンのラベルではなくUILabelだと思います
Inder Kumar Rathore

@Inder Kumar Rathore:追加したスクリーンショットをチェックしてください。確かに、使用しているラベルの種類を間違えました。UIButtonのテキストではなく、UILabelをまだ考えていました。スクリーンショットは、IBを介してUIButtonを調整する方法を示しています。
Joetjah

1
編集させませんが、NSTextAlignmentCenterがUITextAlignmentCenterに取って代わりました。それらは完全に同じことを意味します。 developer.apple.com/library/iOS/documentation/UIKit/Reference/...
OCリカード

89

Solution1

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

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

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

ここに画像の説明を入力してください

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

titleLabel.textAlignmentNumber11手段NSTextAlignmentCenter
titleLabel.numberOfLinesとしてNumber、値は00行の任意の数を意味します

ここに画像の説明を入力してください

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

Xcodeの変更を確認したい場合は、次の手順を実行する必要があります(これらの手順は省略できます)。

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

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}
    

  2. このデザイン可能なサブクラスを、変更するボタンに割り当てます。

Interface Builderを使用してボタンのクラスを変更する方法を示す

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

Interface Builderでデザイン可能なボタンとデフォルトのボタンを比較する



Solution2

コードを記述したい場合は、長いプロセスを実行してください

1. IBOutletボタンの
作成2.viewDidLoadにコードを記述

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


Solution3

Xcodeの新しいバージョンでは(私はXcodeの6.1で)私たちは財産帰属タイトルを持って
選択しAttributed、以下のテキストやプレスセンターのオプションを選択し

PS私が設定しなければならないそのためにテキストが複数行になっていませんでした

btn.titleLabel.numberOfLines = 0

ここに画像の説明を入力してください


ソリューション3では、を追加するだけでLine Breaking = Clip、テキストが複数行に変換されます
finx

解決策3には問題があります。少なくともXcode 11.3.1では、ボタンのタイトルを変更しても機能しません。私が使用したときbtn.titleLabel.textAlignment、それは素晴らしい働きをします。
ブライアンホン

27

UIButtonを使用する必要があります:-

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];


13

現在iOS 6以降を使用している方のために、UITextAlignmentCenterは非推奨になりました。NSTextAlignmentCenterになりました

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


11

Swift 4、xcode 9

myButton.contentHorizontalAlignment = .center

myButton.titleLabel?.numberOfLines = 0を設定すると、ボタン内のラベルが中央に配置されるため、ボタン内でテキストを左揃えにする方法を見つけようとしましたが、これは機能しましたが、.leftに設定しました。
maxcodes '13 / 02/13

7

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

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;

4

UITextAlignmentCenter iOS6では非推奨です

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

btn.titleLabel.textAlignment=NSTextAlinmentCenter;


UIButtonの呼び出し先のtextAlignmentにはプロパティはありません。
ラビ2013年

iOSのUIButtonにはそのようなプロパティはありません
Jayprakash Dubey 2013

彼はbutton.titleLabel.textAlignmentを意味します
OCリッカード



3

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

タイトルを「属性あり」に設定し、中央揃えを選択する必要があります。


これが原因である場合、ストーリーボードを介してテキストカラー、フォントなどを設定することはできません。
Vineesh TP 2018

3

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

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

2

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


1

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

ご参考に

[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.