2

我有一个习惯UITableViewCellUILabel里面有Storyboard. 我动态设置了这个文本,UILabel我需要UILabel相应地调整它的宽度,因为在它之后我有另一个UILabel必须保持并排。

我正在尝试

> MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
> author = @"Some dynamic text";
> cell.authorLabel.text = author;
> [cell.authorLabel sizeToFit];

会发生什么:在第一次渲染时,UILabel只保留在 上设置的宽度storyboard,因此文本被裁剪或后面有太多空间。

滚动后,单元格出列并sizeToFit正确应用该方法,但为时已晚,因为第二个UILabel已经定位在错误的位置。(由于信誉限制低,无法发布图片)

任何想法?

4

2 回答 2

2

也许你的意思是这样的:

MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
author = @"Some dynamic text";
cell.authorLabel.text = author; <-- excluded in your code
[cell.authorLabel sizeToFit];

如果这不起作用,请尝试使用以下方法:

子类 UITableViewCell 并重写以下方法:

- (void)setSelected:(BOOL) selected
{ 
    [super setSelected:selected];
    [self.authorLabel sizeToFit];
}
于 2013-07-22T12:38:47.453 回答
1

使用这个来获取动态高度和宽度,

CGSize sizeDynamic  = [str sizeWithFont:[UIFont fontWithName:@"Arial-BoldMT" size:14] constrainedToSize:CGSizeMake(CGFLOAT_MAX,CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];

你可以得到,

sizeDynamic.height and sizeDynamic.width values
于 2013-07-22T12:26:57.887 回答