Swiftストーリーボードを使用したプロジェクトで、ラベルでテキストを折り返します。ストーリーボードを使用しなかった古いObjective-Cバージョンでは、次の設定を使用しました。完全に。
Swiftの設定は次のとおりです
優先幅の設定に関する潜在的な自動レイアウトの問題について読んでいます。現在、自動レイアウトに設定し、ラベル自体の幅を560に設定しています。ラベルを後続のスーパービューから20ピクセル離れた状態に保つための制約を追加しましたが、これでうまくいくと思いながらもテキストを取得できませんラップ。寸法の設定は次のとおりです。
誰かがテキストを折り返す方法を説明できますか?
まず、朗報です。ラベルを2行に設定し、ワードラップしました。 canラップします。優れた。
次に、ラベルの高さが十分であることを確認する必要があります。 no高さ制約を指定するか、2行に対応できる十分な大きさの高さ制約を指定します。
最後に、幅を制限するにする必要があります。これがテキストの折り返しの原因です。ラベルの幅を制限しない場合、ラベルは右方向に成長し続け、画面からはみ出す可能性があります。ラベルの幅の制限により、この右向きの拡大が停止し、テキストが折り返されます(代わりにラベルが下向きに拡大します)。
幅はいくつかの方法で制限できます。実際の幅の制約を設定できます。または、スーパービューなどの比較的動かないものに対して、先行制約と後続制約を設定できます。 3番目の方法があります。サイズインスペクター(質問の右下にも表示されます)で、優先幅(サイズインスペクターの上部に表示されます)を設定します。これは、 、他のすべてが等しい場合、ラベルは右への成長を停止し、代わりにラップして成長します。
UILabelをプログラムで宣言して、
yourUILabel.contentMode = .scaleToFill
yourUILabel.numberOfLines = 0
yourUILabel.leadingMargin(pixel: 10)
yourUILabel.trailingMargin(pixel: 10)
これは私のために働いた。
1行を超える行数を指定した場合、テキストは折り返されます。ただし、ラベルの高さがコンテンツを表示するのに十分でない場合、折り返しが表示されない場合があります。高さの制約を削除するか、その値を増やすことをお勧めします。
これが誰にも役立つ場合:私はここで与えられたアドバイスに従って、ラベルを2行に折り返さないように修正しましたが、何も機能しませんでした。私にとってうまくいったのは、最初にストーリーボードの関連する制約のいくつかを削除し(自動レイアウトを使用しています)、ラベルが適切にラップされていることです。必要な制約をゆっくりと追加し直しましたが、すべてが正常に機能しているようです。したがって、制約を削除して作り直すことが役立つ場合があります。
この問題を修正したのは、IBのIntrinsic Size
の下のラベルタイプを「プレースホルダー」に変更することでした。これを変更すると、テキストがラップされ、警告が消えました。
ご覧のとおり、インターフェイスビルダーです。 2つの問題があります。 1つは制約を使用する方法で、もう1つはプロパティを使用する方法です。