1

複数行のUILabelを動的に追加するのに問題があります。これが私が得ている結果です:

ここに画像の説明を入力してください

「概要」ボックスのラベルを自然に折り返したいのですが。ラベルを追加するために使用しているコードは次のとおりです。

-(void)setSummary{
    summaryContentLabel = [[UILabel alloc] init];
    summaryContentLabel.numberOfLines=0;
    summaryContentLabel.lineBreakMode=NSLineBreakByWordWrapping;
    summaryContentLabel.text=self.summary;
    summaryContentLabel.font=[UIFont fontWithName:@"Helvetica" size:13.0];

    [summaryView addSubview:summaryContentLabel];
    [summaryContentLabel  setTranslatesAutoresizingMaskIntoConstraints:NO];
    NSDictionary *views = NSDictionaryOfVariableBindings(summaryView,summaryContentLabel ,summaryLabel);
    [summaryView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[summaryLabel]-5-[summaryContentLabel(==100)]-5-|" options:nil metrics:nil views:views]];

}

本のタイトルが私が望むように問題なく折り返されていることに気付くでしょう。それはIBで行われました。残念ながら、このラベルをコードに追加する必要があります。自動レイアウトも要件です。

4

4 に答える 4

2

理解した。次のように、ラベルの幅に制約を追加する必要がありました。

[summaryView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[summaryContentLabel]-|" options:nil metrics:nil views:views]];
于 2012-10-15T18:40:38.323 に答える
1

私は遅れているかもしれませんが、解決策を見つけた方法です。summaryContentLabel には、preferredMaxLayoutWidth を明示的に設定する必要があります。例えば:

summaryContentLabel.preferredMaxLayoutWidth = 200;

また、xib を介して同じビュー レイアウトを行うと、インターフェイス ビルダーが preferredMaxLayoutWidth に正しい値を設定することに気付きました。

于 2012-12-18T18:57:26.593 に答える
-3

複数行のラベルには次のコードを使用してください:-

-(無効)setSummary {

summaryContentLabel = [[UILabel alloc] init];
summaryContentLabel.numberOfLines=0;
summaryContentLabel.textAlignment   = UITextAlignmentLeft;
summaryContentLabel.font=[UIFont fontWithName:@"Helvetica" size:13.0];
[summaryView addSubview:summaryContentLabel];

CGSize size = [self.summary sizeWithFont:[UIFont fontWithName:@"Helvetica" size:13.0] constrainedToSize:CGSizeMake(240, 99999) lineBreakMode:UILineBreakModeWordWrap];
summaryContentLabel.frame=CGRectMake(72, 22, 240, size.height);  //set the frame according to your need
summaryContentLabel.text=self.summary;

}

于 2012-10-15T19:51:15.070 に答える
-4

UILabel に実際にフレーム サイズを設定しているようには見えません。あなたはいつでもできる:

CGRectMake(10, 10, 280, 9999);

高さについては、9999 セットの高さではなく、適切に収まるようにします。

[summaryContentLabel sizeToFit];
于 2012-10-15T18:27:56.623 に答える