複数行ラベル(折り返しを折り返しに設定)をスタックビューに配置すると、ラベルは直ちに改行を失い、代わりに1行に表示されます。UIStackViewの複数行ラベル
なぜこのようなことが起こり、スタックビュー内でマルチラインラベルを保持するのでしょうか?
複数行ラベル(折り返しを折り返しに設定)をスタックビューに配置すると、ラベルは直ちに改行を失い、代わりに1行に表示されます。UIStackViewの複数行ラベル
なぜこのようなことが起こり、スタックビュー内でマルチラインラベルを保持するのでしょうか?
UIView
内UILabel
を埋め込みます)UIStackView
は適切にフィットするUIView
を伸ばします、とUIView
は複数行にUILabel
を制約します。 UILabelのテキストを設定した後
驚くばかり!これは水平のStackViewのために働く –
それはとても愚かですが、それは動作します!ありがとう !たぶん、ある日、AppleはSDKで半分壊れていないものをリリースするだろう。 –
私が協力していたセットアップでは、これは魅力的だった。私は同意する、愚か。しかし、それは働いた。動いている。 :) – tracicot
垂直スタックビューでは、この機能を有効にするにはDistributionを "Fill"に設定する必要があります。 – SnoopyProtocol
ディストリビューションを「塗りつぶし」に設定することは、修正のキーです。 –
stackview
に一定の幅を与えない限り、number of lines
stackview
はまだ
multiLine
に成長しないラベルを設定。
我々はstackview
に一定の幅を与えていない場合は、物事が曖昧取得:我々はstackview
の幅を固定するときに示すように、その幅に達したときに、それは複数行に分割します。 stackview
はラベル付きでどれくらい長くなりますか(ラベル値が動的な場合)。
これは、固定幅をstackview
に指定した理由です。
これがあなたの問題を解決できることを願っています。制約をスーパーするUIView
(例えば、末尾のスペース、トップスペース、および主要な空間にUILabel
を合わせて
スタックビューの幅が固定ではなく、代わりにデバイス(つまりスーパービュー)の幅に比例する場合はどうなりますか? – OutOnAWeekend
はい、比例幅を持つこともできます。ポイントは、何らかの幅の後でラベルを分割する必要があるが、定義する必要がある場合です。あなたは 'UIView'をサブクラス化する場合 – Irfan
@AnandKumarあなたはUIViewController''や 'layoutSubviews'であなたのラベルのための' 'viewDidLayoutSubviews'でpreferredMaxLayoutWidth'を指定することができます。固定値を与える –
IOS9 +
コール[textLabel sizeToFit]。
sizeToFitはpreferredMaxWidthを使用して複数行のラベルを再レイアウトします。ラベルは、セルのサイズを変更するstackViewのサイズを変更します。スタックビューをコンテンツビューに固定する以外の追加の制約は必要ありません。
ビューの1つとしてUIlabelを持つ水平スタックビューの場合、インターフェイスビルダでは最初にUIlabelの行数を0に設定します。これにより、ラベルに1行以上の文字列を含めることができます。これは、スタックビューがalign = fillを持っていたとき、私にとってはうまく動作しませんでした。それを動作させるには、単純にスタックビューのalignment = centerを設定します。ラベルはスタックビュー内の複数の行に展開できるようになりました。
Apple documentationは、スタックの軸に垂直な サイズを計算するとき、スタック・ビューが各 配置ビューの固有コンテンツSizeプロパティを使用して充填位置合わせを除くすべてのアラインメントについて
を言う
ここには以外の単語があります。塗りつぶしが使用されている場合、水平スタックビューは配置されたサブビューサイズを使用して垂直方向にサイズ変更されません。私の場合は
これは、ハッキングのない適切な解決策です。ドキュメントを読むことはいつでも報われる! –
これは容認された解決策であるべきです。 UIViewの回避策では、私のケースではUILabelのテキストが別のサブビューに浮かんでいました。 – jstorm31
は、私が以前の提案に従ったが、私のテキストはまだのみ風景の中にかかわらず、単一の行に切り捨てなっていました。判明したのは、目に見えない\0
ラベルの文字列にnull文字が見つかりました。それは私が挿入したemダッシュ記号と一緒に導入されているに違いありません。これがあなたのケースでも起こっているかどうかを確認するには、ビューデバッガを使用してラベルを選択し、そのテキストを検査します。
Add UIStackView properties,
stackView.alignment = .fill
stackView.distribution = .fillProportionally
stackView.spacing = 8.0
stackView.axis = .horizontal
instead of adding label inside UIView which is not required.
If you are using inside UITableViewCell please, reload data on rotation.
あなたは0に行数を設定しましたか? – dasdom
あなたは答えを見つけましたか? – Brenden