我正在使用setNumberOfLines
和sizeToFit
动态调整tableView单元格中的标签大小。当有超过2行时,我的标签会向上延伸,但我想让它向下延伸。
假设我有label1
和label2
。在设置y
之前,他们的label.text
位置是相同的:
label1 label2
--------- ---------
| | | |
--------- ---------
label1只有一行,而label2在分别设置label.text
后有两行。它现在看起来像这样:
label1 label2
---------
--------- | line1 |
| line1 | | line2 |
--------- ---------
然而,我想要的是:
label1 label2
--------- ---------
| line1 | | line1 |
--------- | line2 |
---------
我相信有一种简单的方法可以实现我的目标,但我无法通过Google搜索我能想到的关键字来找到它。
我的代码:
myLabel.text = value;
[myLabel setNumberOfLines:0];
[myLabel sizeToFit];
答案 0 :(得分:1)
试试这个:
NSString *text1 = @"Your text for label2";
CGSize constraint1 = CGSizeMake(125, 2000); //width of your label....
CGSize size1 = [text1 sizeWithFont:[UIFont fontWithName:@"ArialMT" size:12.0] constrainedToSize:constraint1 lineBreakMode:UILineBreakModeWordWrap]; //font of your label
cell.myLabel.frame = CGRectMake(posx,posy,125,size1.height);
//posy is same as for label1
cell.myLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.myLabel.numberOfLines = 0;
cell.myLabel.text = text1;
答案 1 :(得分:1)
我不知道为什么人们会投票我的问题。无论如何,我有一个理想的解决方案,我希望我可以帮助那些有同样问题的人。
要防止表格视图单元格中的标签向上拉伸,您必须为故事板上的标签设置Top Space to
约束:
您可以通过将标签拖动到单元格顶部附近来实现,Xcode会自动生成它。您可以通过单击此图片右下角的按钮来修改约束的值。
制定约束后,标签将不再延伸。
答案 2 :(得分:0)
要实现这一点,您必须根据文本专门设置框架,以便标签显示
CGSize maximumLabelSize = CGSizeMake(Width,VeryLargeHeight);
CGSize expectedLabelSize = [string sizeWithFont:label.font
constrainedToSize:maximumLabelSize
lineBreakMode:label.lineBreakMode];
expectedLabelSize.height是要在框架中设置的标签高度,并将numberofLines设置为0
答案 3 :(得分:0)
sizeToFit
会将文字内容移至框架的顶部。请参阅此answer中的图表
而是使用sizeWithFont:constrainedToSize:lineBreakMode:
API获取文本的确切高度,然后将其设置为您的标签。
答案 4 :(得分:0)
之前发布的每个答案都可以用于一些新增的问题。将文本放入UITableViewCell(自定义或不自定义)非常重要。如果tableView:heightForRowAtIndexPath:
返回的值大于标签高度,则代码将起作用,否则,标签将被错误显示。
因此,您必须从tableView:heightForRowAtIndexPath:
返回正确的值才能根据需要显示内容,因此请计算要在tableView:heightForRowAtIndexPath:
中显示的文字所需的高度(+ - 如果您有其他观点,则为其他值)。
此外,如果您使用autloayout检查单元格视图上的约束,如果没有检查单元格视图上的弹簧和支柱。