1

でこの奇妙な動作をしていUILabelます。1を除いて、どれでもnumberOfLines問題ありません。行数を1に設定すると、後で設定した幅は無視されます。なぜ1行で台無しになるのかわかりません...

ここに私のコードがあります

UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor greenColor];
label.text = @"here is my label with lots of text to fill, here is my label with lots of text to fill";
label.frame = CGRectMake(20, 20, 100, 0);
CGRect rect = label.frame;
label.numberOfLines = 2;
label.lineBreakMode = NSLineBreakByTruncatingTail;
[self.view addSubview:label];
rect.size.width = 100;
label.frame = rect;
[label sizeToFit];
4

4 に答える 4

0

はい、numberOfLines=1 の場合は機能しません

すべてのケースで機能するようにするには、この行を最後に追加する必要があります..

ラベル.幅 =​​ 分(ラベル.幅, 100)

于 2015-04-29T22:43:55.490 に答える
0

その場合に numberOfLines = 1 を使用する場合、テキストは 1 行になりますnumberOfLines = 0

label.numberOfLines = 0;

ラベル フレームを再度定義する必要はありませんので、これらのステートメントを削除してください。

CGRect rect = label.frame;
rect.size.width = 100;
label.frame = rect;

このコードを使用すると、これは完璧です..

UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor greenColor];
label.text = @"here is my label with lots of text to fill, here is my label with lots of text to fill";
label.frame = CGRectMake(20, 20, 100, 0);
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByTruncatingTail;
[self.view addSubview:label];

[label sizeToFit];
于 2013-05-06T13:42:21.743 に答える
-1

これを次のように使用します。

UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor greenColor];
label.text = @"here is my label with lots of text to fill, here is my label with lots of text to fill";

label.numberOfLines = 0;

CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(100 , 9999) lineBreakMode:label.lineBreakMode];
float lHeight = labelSize.height;
label.frame = CGRectMake(20, 20, 100, lHeight);

label.lineBreakMode = NSLineBreakByTruncatingTail;
[self.view addSubview:label];

編集 : - (void)sizeToFit

説明 :

サブビューのみを囲むように、レシーバー ビューのサイズを変更して移動します。現在のビューのサイズを変更して、最も適切なスペースを使用する場合は、このメソッドを呼び出します。特定の UIKit ビューは、独自の内部ニーズに応じてサイズを変更します。場合によっては、ビューにスーパービューがない場合、画面の境界に合わせてサイズが変更されることがあります。したがって、特定のビューのサイズを親ビューに合わせたい場合は、このメソッドを呼び出す前に親ビューに追加する必要があります。

// [label sizeToFit]; 

お役に立てば幸いです。

于 2013-05-06T13:42:24.713 に答える