Interface Builderを使用して、UIButtonのテキストを1行ずつ中央に配置するにはどうすればよいですか?私はオプションを精査していますが、表示されません。ボタンは次のとおりです。
7 に答える
テキストをペン先の中央に配置するように設定することはできません。ただし、コードの配置を変更することはできます。
- (void)viewDidLoad {
[super viewDidLoad];
self.myButton.titleLabel.textAlignment = UITextAlignmentCenter;
}
これは古い質問ですが、UIButtonの複数行のテキストをIBの中央に配置しようとして、私自身がこの質問に出くわしました。私が見つけたのは、デフォルトで、「title」が「plain」に設定され、「linebreak」が「wordwrap」に設定されている場合、タイトルテキストの最長行が中央に配置され、他の行はこの行に左寄せされます( OPのスクリーンキャプチャに似ています)。
すべての行を適切に中央に配置するには、「タイトル」を「属性付き」に変更する必要があります。これにより、タイトルテキストの外観をカスタマイズするためのより多くのオプションが提供されます。テキストの各行を中央に配置します(実際には、各行の配置を個別に変更できます)。また、テキストの上の「詳細...」の下にある「改行」を「ワードラップ」に設定してください。少なくとも現時点では、Xcode 4.5では、この改行オプションの動作にバグがあるようです。これは、IBのボタンのテキストが正しく表示されず、最初の行を除くすべてが切り捨てられるためです。「ワードラップ」と切り捨てオプションはIBで逆に解釈されるようですが、アプリを実行すると、シミュレーターで正しく動作します。
実際には、InterfaceBuilderでそれを行うことができます。
Titleを「Attributed」に設定してから、中央揃えを選択するだけです。
@fromコメント:折り返すには、改行を文字の折り返しまたは単語の折り返しに設定する必要があります。
PS:これはxcodeでレンダリングされない可能性があります。ただし、実行時に機能します。
ストーリーボードを使用して、UIButtonで中央の複数行のテキストを設定できます。
これは、テキストに2行以上を含める方法です。
以下のキーパスをに設定します
IdentityInspector- >ユーザー定義のランタイム属性->以下の新しいキーと値のペアを追加します
titleLabel.textAlignment - NSNumber - 1
と
titleLabel.numberOfLines - NSNumber - 5 - or use "0" meaning "any number"
次のようになります。
(2016)残念ながら、ストーリーボードには実際には2行以上のテキストは表示されませんが(最初の1行のみが表示されます)、シミュレーターまたはデバイスで実行すると完全に機能します。
IBの場合、タイトルを「属性付き」に設定し、中央揃えを選択します(Alexander Danilovが提案したように)
しかし、 Swift 4を使用してコードでそれを実行したい場合:
// center button text
yourButton.titleLabel?.textAlignment = .center
// enable multiline if needed
yourButton.titleLabel?.numberOfLines = 0
すべてのオプションがInterfaceBuilderを使用して実行されるわけではないため、コーディングによってそれらの一部を実行する必要があります。通常、関数内で実行しますviewDidLoad
。
コードによってボタン内のテキストを中央に配置するには、次を使用できます。
button1.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
同じ手法を使用して、テキストを任意の方向、たとえば左に揃えることができます。
button1.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
ただし、これではテキストが左側に移動しすぎて、左側の配置を維持する前にスペースが必要になる場合があるため、次のように配置コードの後に挿入図を追加します。
button1.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
この場合、テキストをY軸から10ポイント押しています。ご存知のように、Appleはポイント技術を使用して距離を測定し、通常のディスプレイとRetinaディスプレイ(網膜は通常の2倍)の間で簡単に適応できるため、ここではピクセルではなくポイントと言います。
まだ試していませんが、ボタンの上にCGRectを作成し、それをフレームとして使用してラベルを作成すると、ラベルを操作して設定することができると思います。 textAlignmentプロパティをUITextAlignmentCenterにし、背景色をクリアに設定します。
これはuitableviewで機能しますが、ボタンで機能するかどうかはわかりません。お役に立てれば。