web-dev-qa-db-ja.com

UILabelテキストが折り返されない

Swiftストーリーボードを使用したプロジェクトで、ラベルでテキストを折り返します。ストーリーボードを使用しなかった古いObjective-Cバージョンでは、次の設定を使用しました。完全に。

Objective-C without Storyboard Settings

Swiftの設定は次のとおりです

Swift with Storyboard Settings

優先幅の設定に関する潜在的な自動レイアウトの問題について読んでいます。現在、自動レイアウトに設定し、ラベル自体の幅を560に設定しています。ラベルを後続のスーパービューから20ピクセル離れた状態に保つための制約を追加しましたが、これでうまくいくと思いながらもテキストを取得できませんラップ。寸法の設定は次のとおりです。

Label Dimension and Constraints

誰かがテキストを折り返す方法を説明できますか?

29
jonthornham

まず、朗報です。ラベルを2行に設定し、ワードラップしました。 canラップします。優れた。

次に、ラベルの高さが十分であることを確認する必要があります。 no高さ制約を指定するか、2行に対応できる十分な大きさの高さ制約を指定します。

最後に、幅を制限するにする必要があります。これがテキストの折り返しの原因です。ラベルの幅を制限しない場合、ラベルは右方向に成長し続け、画面からはみ出す可能性があります。ラベルの幅の制限により、この右向きの拡大が停止し、テキストが折り返されます(代わりにラベルが下向きに拡大します)。

幅はいくつかの方法で制限できます。実際の幅の制約を設定できます。または、スーパービューなどの比較的動かないものに対して、先行制約と後続制約を設定できます。 3番目の方法があります。サイズインスペクター(質問の右下にも表示されます)で、優先幅(サイズインスペクターの上部に表示されます)を設定します。これは、 、他のすべてが等しい場合、ラベルは右への成長を停止し、代わりにラップして成長します。

71
matt

UILabelをプログラムで宣言して、

yourUILabel.contentMode = .scaleToFill
yourUILabel.numberOfLines = 0
yourUILabel.leadingMargin(pixel: 10)
yourUILabel.trailingMargin(pixel: 10)

これは私のために働いた。

9
Vignesh raja

1行を超える行数を指定した場合、テキストは折り返されます。ただし、ラベルの高さがコンテンツを表示するのに十分でない場合、折り返しが表示されない場合があります。高さの制約を削除するか、その値を増やすことをお勧めします。

1
Aman Jain

これが誰にも役立つ場合:私はここで与えられたアドバイスに従って、ラベルを2行に折り返さないように修正しましたが、何も機能しませんでした。私にとってうまくいったのは、最初にストーリーボードの関連する制約のいくつかを削除し(自動レイアウトを使用しています)、ラベルが適切にラップされていることです。必要な制約をゆっくりと追加し直しましたが、すべてが正常に機能しているようです。したがって、制約を削除して作り直すことが役立つ場合があります。

0
Ed Manning

この問題を修正したのは、IBのIntrinsic Sizeの下のラベルタイプを「プレースホルダー」に変更することでした。これを変更すると、テキストがラップされ、警告が消えました。

0
jonthornham

ご覧のとおり、インターフェイスビルダーです。 2つの問題があります。 1つは制約を使用する方法で、もう1つはプロパティを使用する方法です。

  1. 行の折り返し中に間違った固定高さを指定しました。自動サイズ変更ラベルを作成する必要があります。つまり、状況に応じて、高さを削除し、下部の制約を追加するか、単純な高さを削除する必要があります。テキストは次の行に移動していますが、制約が固定されているため、表示できません。
  2. サブビューをクリップするオプションを有効にしますが、これはビューをカットし、ラップWordを表示できないため、間違っています。
0
Rehan Ali