0

私のアプリには 4 つのラベルがあり、前のラベルのすぐ下に追加する必要があります。問題は、これらのラベルが動的にテキストで埋められ、ラベルのサイズがわからないことです。

たとえば、次のコードには、myLabel と titleLabel の 2 つのラベルがあります。myLabel のすぐ下に titleLabel を貼り付ける必要がありますが、問題は後者の高さが異なることです。そのため、titleLabel の y 座標を指定できません。

CGRect labelFrame = CGRectMake(22, 50, 280, 150);
UILabel *myLabel = [[UILabel alloc] initWithFrame:labelFrame];
[myLabel setText:finalIngredients];
[myLabel setBackgroundColor: [UIColor lightGrayColor]];
[myLabel setFont:[UIFont fontWithName:@"Helvetica" size:15]];
[myLabel setNumberOfLines:0];
[myLabel sizeToFit];
[self.view addSubview:myLabel];


CGRect titleLabelFrame = CGRectMake(0, 25, 400, 15);
UILabel *titleLabel = [[UILabel alloc] initWithFrame:titleLabelFrame];
[titleLabel setText:title];
[self.view addSubview:titleLabel];

ありがとう

4

3 に答える 3

2

とを使用しmyLabel.bounds.size.heightて、 のmyLabel.frame.origin.y高さと開始 y 座標をmyLabelそれぞれ取得します。私の知る限り、呼び出し時に動的に変更さsizeToFitれます (たとえば)。あなたの場合、単に行を変更することができます

CGRect titleLabelFrame = CGRectMake(0, 25, 400, 15);

CGRect titleLabelFrame = CGRectMake(0, myLabel.frame.origin.y + myLabel.bounds.size.height, 400, 15);
于 2012-07-01T03:05:17.790 に答える
1

これで高さを動的に計算します。

 CGSize size = [finalIngredients sizeWithFont:[UIFont systemFontOfSize:15]
      constrainedToSize:CGSizeMake(100, 200)
          lineBreakMode:UILineBreakModeWordWrap];

ここで finalIngredients は文字列です。100 の代わりに必要なラベルの幅を指定するだけです。

前または次のラベルに応じてラベルのフレームを動的に計算する

于 2012-07-01T02:46:47.587 に答える
0

テキストが動的である場合、テキストを変更する関数があるのは当然です。

その関数内で、内部の新しく変更されたテキストの高さを計算しますmyLabel。次に、 の y 位置をtitleLabel' myLabelsx 位置 +myLabelの新しく計算された高さ + それらの間に必要なバッファー スペースに設定します。:)

于 2012-07-01T02:32:53.290 に答える