2013-07-22 43 views
2

我有一个自定义UITableViewCellUILabelStoryboard。我动态地设置了这个UILabel的文本,我需要相应地调整它的宽度,因为在这之后我有另一个必须保持并排的UILabelUILabel动态宽度与单元格上的sizeToFit

我与

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

会发生什么努力: 在第一渲染UILabel只是不断被上storyboard设置宽度,因此无论是文本裁剪或之后有太多的空间。

滚动后,单元格出列并正确应用sizeToFit方法,但已经太迟了,因为第二个UILabel已被放置在错误的位置。 (由于名誉限制较低,无法发布图片)

任何想法?

+0

见[这个问题](http://stackoverflow.com/questions/1947970/dynamic-calculation-of-uilabel-width-in-uitableviewcell?rq=1 ) –

回答

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 
+0

这可以根据内容正确调整'UILabel'的大小,但我仍然遇到这样的问题:并排移动标签不会移动,因此它不会考虑水平间距约束和最终结果是两个文本重叠。我应该根据第一个标签的新宽度来计算第二个标签的新位置吗? N.B.如果这个'sizeWithFont'工作,并且同一点上的'sizeToFit'不起作用,我会忽略'sizeToFit'方法? – stilllife

0

也许你的意思是这样的:

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]; 
} 
+0

抱歉忘记您正确添加的线路。无论如何,这仍然不能解决问题 – stilllife