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 回答