0

我正在尝试根据从 API(图像+文本)中提取的内容来调整单元格的大小。

我现在已经设置好了,我为图像、标题(两行)和描述(两行)留出了空间。

问题:有时没有Image,有时Headline只有一行,有时没有描述或1行描述;所以我需要根据这些动态内容调整单元格的大小。

WebListCell.m

- (void)layoutSubviews {
    [super layoutSubviews];

    self.imageView.frame = CGRectMake(1, 20, 320, 180);
    self.headlineLabel.frame = CGRectMake(10, 210, 290, 40);
    self.descriptionLabel.frame = CGRectMake(10, 250, 290, 30);

    [self.headlineLabel setNumberOfLines:2];
    [self.headlineLabel sizeToFit];
    [self.descriptionLabel setNumberOfLines:2];
    [self.descriptionLabel sizeToFit];
}

WebListViewController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    Feed *feedLocal = [headlinesArray objectAtIndex:indexPath.row];
    NSString *headlineText = [NSString stringWithFormat:@"%@", feedLocal.headline];
    NSString *descriptionText = [NSString stringWithFormat:@"%@", feedLocal.description];
    cell.headlineLabel.text = headlineText;
    cell.descriptionLabel.text = descriptionText;
    }

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    WebListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"WebListCell"];
    Feed *feedLocal = [headlinesArray objectAtIndex:indexPath.row];

    NSString *head = [NSString stringWithFormat:@"%@", feedLocal.headline];
    cell.headlineLabel.text = head;
    if (head.length > 100 ){
        [cell.headlineLabel setNumberOfLines:1];
    }
} // WARNING ALERT: "CONTROL REACHES END OF NON-VOID FUNCTION"

我已经布置WebListCell.m了单元格,然后WebListViewController.m需要WebListCell.m布局。我正确地提取了所有数据,但只需要帮助调整大小并且无法弄清楚,即使我已经检查了 StackOverflow 上的其他问题......有人可以帮忙吗?

现在我所拥有的无法调整单元格高度。

非常感谢,我会根据需要发布任何额外的代码!

4

1 回答 1

0

heightForRowAtIndexPath期望您返回一个浮点值.. 即单元格的高度。这是引发的异常。

要弄清楚一个字符串占用了多少垂直空间,可以使用以下方法:

CGSize size = [feedLocal.headline sizeWithFont:FONT 
                                      forWidth:WIDTH 
                                 lineBreakMode:NSLineBreakByWordWrapping];

return size.height + SOME_PADDING;

您需要尝试看起来不错的宽度和填充。您在问题中提到了一些其他变量,但通常,这是您需要做的。

于 2013-07-29T01:35:28.183 回答