2

次のコードを使用して、IOS にテキストを追加します

//Set up label frame
UILabel *tempLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 10, 210, 80)];
self.answer_text_label = tempLabel;
[tempLabel release];    
[self.preview_answer_container addSubview:self.answer_text_label];

//Populate label with text
self.answer_text_label.text = self.answer.text;
self.answer_text_label.numberOfLines = 4;
self.answer_text_label.lineBreakMode = UILineBreakModeWordWrap;
[self.answer_text_label sizeToFit];

しかし、私が得た結果はそのままで、ラベル設定 'CGRectMake(100, 10, 210, 80)' で規定されているように、テキストがフレーム内にとどまるのではなく、右にオーバーフローしているようです。

ここに画像の説明を入力

に変更すると、ラッピングが機能しself.answer_text_label.numberOfLines = 0ます。しかし、規定のラベル フレーム内にテキストを制限する必要があるため、これはうまくいきません。

テキストを折り返して 4 行だけにする方法はありますか?

編集:

提案されたコードを試す

self.answer_text_label.text = self.answer.text;
[self.answer_text_label sizeToFit];
CGRect labelRect = self.answer_text_label.frame;
labelRect.origin.y = CGRectGetMaxY(labelRect);
labelRect.size = self.answer_text_label.frame.size;
self.answer_text_label.frame = labelRect;

以下のように結果。私の問題を解決していないようだった

ここに画像の説明を入力

4

2 に答える 2

2

フレームを明示的に設定してみてください -

[self.answer_text_label sizeToFit];
CGRect labelRect = self.answer_text_label.frame;
labelRect.origin.y = CGRectGetMaxY(labelRect);
labelRect.size = self.answer_text_label.frame.size;
self.answer_text_label.frame = labelRect;

編集-これを使用する必要はありません。以下を使用してください-以下で使用するコードのこれらを削除し、フレームの他のプロパティを削除し、sizeToFitも削除します-

self.answer_text_label.numberOfLines = 4;
self.answer_text_label.lineBreakMode = UILineBreakModeWordWrap;

垂直方向の配置 - (上記のコード行では、これも使用し、サイズを使用しないでください)

    CGSize textSize = [self.answer_text_label.text sizeWithFont:self.answer_text_label.font 
                                constrainedToSize:CGSizeMake(self.answer_text_label.frame.size.width, MAXFLOAT)
                                    lineBreakMode:self.answer_text_label.lineBreakMode];
self.answer_text_label.frame = CGRectMake(20.0f, 20.0f, textSize.width, textSize.height);
于 2012-05-08T04:33:01.407 に答える
0

iOS 6 以降ではNSLineBreakByWordWrapping、UILineBreakModeWordWrap ではなく を使用します。

self.answer_text_label.lineBreakMode = NSLineBreakByWordWrapping;
于 2014-08-05T04:46:44.637 に答える