web-dev-qa-db-ja.com

IBを使用して複数行テキストをUIButtonの中央に配置

Interface Builderを使用してUIButtonのテキストを行ごとに中央揃えするにはどうすればよいですか?私はオプションを精査しているだけで、それが表示されません。ここにボタンがあります:

button with text not centered

36
sdknewbie

テキストをペン先の中央に配置することはできません。ただし、コードの配置を変更できます。

- (void)viewDidLoad {
    [super viewDidLoad];

    self.myButton.titleLabel.textAlignment = UITextAlignmentCenter;
}
58
rob mayoff

私はこれが古い質問であることを知っていますが、IBのUIButtonの複数行のテキストを中央に配置しようとする私自身の試みでそれを見つけました。私が見つけたのは、デフォルトで、「タイトル」が「プレーン」に設定され、「改行」が「ワードラップ」に設定されている場合、タイトルテキストの最も長い行が中央に揃えられ、他の行はこの行に揃えられます( OPの画面キャプチャに似ています)。

すべての行を正しく中央揃えにするには、「タイトル」を「属性」に変更する必要があります。これにより、タイトルテキストの外観をカスタマイズするための多くのオプションが提供されます。テキストの各行を中央揃えにします(実際に各行の配置を個別に変更できます)。また、テキストの上にある[もっと...]の下の[改行]を[ワードラップ]に設定してください。少なくとも現時点ではXcode 4.5では、この改行オプションの動作にバグがあるようです。IBのボタンのテキストが正しく表示されず、最初の行を除くすべてが切り捨てられるためです。 「ワードラップ」オプションと切り捨てオプションはIBで逆に解釈されるようですが、アプリを実行すると、シミュレータで正しく動作します。

14
Jeff Lockhart

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

タイトルを「属性付き」に設定し、中央揃えを選択するだけです。

コメントから:折り返すには、改行を文字の折り返しまたはワードの折り返しに設定する必要があります。

PS:これはxcodeでレンダリングされない可能性があります。ただし、実行時に機能します。

11

ストーリーボードを使用して、UIButtonの中央マルチラインテキストを設定できます。

これは、テキストを2行以上にする方法です。

以下の主要なパスを

Identity Inspector->ユーザー定義のランタイム属性->以下で新しいキーと値のペアを追加

titleLabel.textAlignment - NSNumber - 1

そして

 titleLabel.numberOfLines - NSNumber - 5 - or use "0" meaning "any number"

次のようになります。

enter image description here

(2016)残念ながら、実際にはストーリーボードに2行以上のテキストが表示されません(最初の1行だけが表示されます)が、シミュレーターまたはデバイスで実行すると完全に機能します。

8
Gupta Nishant

[〜#〜] ib [〜#〜]の場合、タイトルを「属性付き」に設定し、中央揃えを選択します(例: Alexander Danilovが推奨)

Swift 4を使用してコードで実行する場合:

// center button text
yourButton.titleLabel?.textAlignment = .center 

// enable multiline if needed
yourButton.titleLabel?.numberOfLines = 0 
3
budidino

すべてのオプションがInterface Builderを使用して実行されるわけではないため、コーディングによってそれらの一部を実行する必要があり、通常は関数viewDidLoad内で実行します。

コードによってボタン内のテキストを中央に配置するには、次のコードを使用できます。

button1.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

同じテクニックを使用して、テキストを任意の方向、たとえば左に揃えることができます。

button1.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

ただし、これによりテキストが左に移動しすぎて、左揃えを維持する前にスペースを確保したい場合があるため、次のように、整列コードの後に​​インセットを追加します。

button1.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);

この場合、テキストをY軸から10ポイント押します。私が知っているように、ここではピクセルではなくポイントと言いますAppleはポイントテクニックを使用して距離を測定し、通常のディスプレイと網膜ディスプレイ(網膜は通常の2倍です)の間で簡単に適応できるようにします。

2
antf