7

2行の文字列をUIlabel表示できるビューがあります。しかし、私の場合、長い単語は 1 つしかありません。改行モードをUILineBreakModeTailTruncationまたはに設定してもUILineBreakModeWordWrap、単語は常に 2 行に分割されます。次のように: "xxxxxx xx" 最初の行で次のように切り捨てたい: "xxxx..."

それを実装する方法はありますか。ほとんどの場合、2 行の単語を表示できるはずです。

追加編集: 次の画像を例に取ります。上の 2 つのラベルは、私が予想したものです。1 つの長い単語は 1 行で切り詰めることができます。複数の短い単語を 2 行で表示できます。一番下のラベルは現在起こっています。

ここに画像の説明を入力

4

4 に答える 4

7

求めていることを実行するには、単語が 1 つしかないかどうかを調べる必要があります。ある場合は、行数を 1 に設定すると、自動縮小によって問題が修正されます。ない場合は、行数を 0 に設定します。

例えば

UILabel *label = [[UILabel alloc] init];
label.font = [UIFont systemFontOfSize:12.0];
label.adjustsFontSizeToFitWidth = YES;
label.minimumScaleFactor = 0.8;
label.text = NSLocalizedString(@"Information", @"E: 'Information'");
NSUInteger words = [label.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]].count;
label.numberOfLines = (words == 1) ? 1 : 0;

スイフト3.0

let label = UILabel()
label.font = UIFont.systemFont(ofSize: 12)
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.8
label.text = NSLocalizedString("Information", comment: "E: 'Information'")
let words = label.text?.components(separatedBy: NSCharacterSet.whitespacesAndNewlines).count
label.numberOfLines = words == 1 ? 1 : 0
于 2015-03-18T17:59:10.690 に答える
1

何もしないでください

行数設定 1 ノーブレークモード

フォントサイズと最小フォントサイズを同じに設定する

画像を見るここに画像の説明を入力

ここに画像の説明を入力

于 2012-07-05T07:14:38.400 に答える
0

行数を 1 に設定するか、デフォルトで行数を 1 に設定しないでください。また、改行モードは UILineBreakModeTailTruncation... になり、ラベルの幅を特別にチェックします....続く ...

  [lbl setFrame:CGRectMake:(10,10,50,30)];
  [lbl setLineBreakMode:UILineBreakModeTailTruncation];
  [lbl setNumberOfLines:1];

これがあなたを助けるかもしれません...

于 2012-07-05T07:16:47.847 に答える
0

ラベルをより広くすることで、この問題を解決できます。

[lbl setFrame:CGRectMake:(xPosition,yPosition,heightValue,21)];

[lbl setNumberOfLines:1];

どこ

xPosition と yPosition の値は、ラベルに設定する値です。

heightValue は、ビュー内でラベルを適切に配置する適切な値です。

続ける...

于 2012-07-05T07:28:27.490 に答える