0

当我尝试在 Storyboard 中设置的单元格中设置标签的高度时,它可以工作,但是当我尝试设置具有它自己的 .xib 文件的标签的高度时,它就不起作用了。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {



    static NSString *CellIdentifier = @"MainArticleCell";

     MainArticleCell *cell = (MainArticleCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

cell.mainArticleTitleLabel.frame = CGRectMake(0, 0, 320, 30); // NOT WORKING
...

我成功连接到标签,因为当我尝试添加文本时它可以工作。

cell.mainArticleTitleLabel.text = @"lorem ipsum text";

问题出在哪里?

更新(改进的解释):

当我在设置高度之前检查是否像在 IB 上设置并且在代码中设置之后就像我设置但在模拟器中的视觉效果是一样的。

NSLog(@"%f", cell.mainArticleTitleLabel.frame.size.height);
cell.mainArticleTitleLabel.frame = CGRectMake(0, 117, 320, 48);
NSLog(@"%f", cell.mainArticleTitleLabel.frame.size.height);

更新 2

我什至可以改变背景颜色(但不能设置高度)

cell.mainArticleTitleLabel.backgroundColor = [UIColor redColor];
cell.mainArticleTitleLabel.frame = CGRectMake(0, 117, 320, 48); // NOT WORKING 
4

2 回答 2

0

问题是你不能在

cellForRowAtIndexPath

你必须在 heightForRowAtIndexPath

这是一个代码示例

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //in my case i get the text of the cell in an array
    NSString* theText =  [anArray objectAtIndex:indexPath.row];

    //then calculate the texte size with standard text
    CGSize textSize = [theText sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];

    return textSize.height;
}

如果在 iOS 6 中使用属性文本,请使用

CGRect rectSize = [theText boundingRectWithSize:CGSizeMake(labelWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:NULL];

并返回

return rectSize.size.height;

我在我的代码中使用它,它适用于动态单元格高度。

编辑

我阅读了不同的评论。看来我的回答没有用,因为您的问题不在于返回 heightForRowAtIndexPath 中的值,因为您已经在这样做了。您的问题是它在情节提要中工作,而不是在单个 xib 中。那个时候我帮不上忙。

于 2012-11-07T17:23:15.490 回答
0

经过多次尝试后,我放弃了这种方式,我尝试通过情节提要上的 TableView 添加一个单元格并添加自定义类,它可以工作。

于 2012-11-07T20:58:49.223 回答