web-dev-qa-db-ja.com

2行のテキストUIButton

UIButtonがあり、ボタンのテキストはランダマイザーで埋められています。ただし、私の問題は、テキストの文字数が多すぎて、ボタンにテキスト全体が表示される場合があることです。

文字が多すぎるかどうかを確認してから、残りのテキストを別のテキスト行にドロップすることはできますか?では、基本的にUIButtonの行ではなくテキスト行を使用する必要がありますか?

13
Mr Riksson

Objective-C

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.numberOfLines = 2;
button.titleLabel.textAlignment = NSTextAlignmentCenter; // if u need

それ以外の場合はこれを使用します

button.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
button.titleLabel.textAlignment = NSTextAlignmentCenter;
[button setTitle: @"Line1\nLine2" forState: UIControlStateNormal];

スイフト

button.titleLabel!.lineBreakMode = .ByWordWrapping
button.titleLabel!.numberOfLines = 2
button.titleLabel!.textAlignment = .Center

それ以外の場合はこれを使用します

button.titleLabel!.lineBreakMode = .ByWordWrapping
button.titleLabel!.textAlignment = .Center
button.setTitle("Line1\nLine2", forState: .Normal)

Swift

buttonName.titleLabel!.lineBreakMode = .byWordWrapping
buttonName.titleLabel!.textAlignment = .center
buttonName.setTitle("Line1\nLine2", for: .normal)
31
Anbu.Karthik

Interface Builderで、改行モードをワードラップに変更します。 UIButtonコントロール:

enter image description here

また、テキストを中央に配置するには、プレーンではなくタイトルAttributedを作成します。

enter image description here

2
Suragch

ストーリーボードまたは.xibファイルを使用していると仮定して、ボタンをクリックして右側の属性インスペクターを開き、[ボタン]セクションで[改行]フィールドを探します。これをドロップダウンすると、(とりわけ)2つのオプションが表示されます-「文字の折り返し」と「ワードラップ」。これらは、必要な機能を提供します。

または、コードで次のいずれかを使用できます

[BUTTON setLineBreakMode:NSLineBreakByWordWrapping]
[BUTTON setLineBreakMode:NSLineBreakByCharWrapping]
1
Alex Brown

ワードラップではなく自動レイアウトを使用すると、UILabelが大きくなるという問題がありました。解決策は、preferredMaxLayoutWidthを設定して、テキストを強制的に折り返すことでした。

ボタンの場合、次を使用して同じことを行うことができます。

button.titleLabel.preferredMaxLayoutWidth = <max width required>.
1
Rory McKinnel