Iphone UITableViewCell的动态高度

Iphone UITableViewCell的动态高度,iphone,Iphone,我正在使用UIWebView作为UITableViewCell的内容。当我添加UITableView时,我对UITableViewCell使用了一些恒定的高度。因为UIWebView中没有加载任何内容。当在UIWebView中添加实际内容时,我能够获得UIWebView的实际高度 现在的问题是UIWebView具有适当的高度,但单元格的高度小于UIWebView的新高度。如何更新该单元格的高度?在该方法中,您可以动态更改行高度 -(CGFloat)tableView:(UITableView *

我正在使用UIWebView作为UITableViewCell的内容。当我添加UITableView时,我对UITableViewCell使用了一些恒定的高度。因为UIWebView中没有加载任何内容。当在UIWebView中添加实际内容时,我能够获得UIWebView的实际高度


现在的问题是UIWebView具有适当的高度,但单元格的高度小于UIWebView的新高度。如何更新该单元格的高度?

在该方法中,您可以动态更改行高度

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

把这个方法放到你的代码中,它会工作的

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
    CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
    CGSize labelSize = [[arrLocation objectAtIndex:indexPath.row] sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
    return labelSize.height + 5;
}

您可以参考此示例以获取帮助:

请尝试以下代码:

- (void)viewDidLoad {
        [super viewDidLoad];
        self.title = @"Webview in UITableView";
        webview = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)]; // Don't use CGRectZero here, won't work
        webview.delegate = self;
        webview.hidden = YES;

        [webview loadRequest:[[NSURLRequest alloc] 
                              initWithURL: [NSURL URLWithString:@"http://www.google.com/"]]];

        [self.tableView setTableFooterView:webview]; // Leave this, else you'll have rows to fill the rest of the screen

    }

    - (void) webViewDidFinishLoad:(UIWebView *)webView {
        float newSize = [[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollHeight"] floatValue];
        NSLog(@"Resizing webview from %.2f to %.2f", webView.frame.size.height, newSize);
        webView.frame = CGRectMake(webView.frame.origin.x, webView.frame.origin.y, webView.frame.size.width, newSize);
        webView.hidden = NO;

        // We need to reset this, else the new frame is not used.
        [self.tableView setTableFooterView:webview];
    }

在UIWebView完成加载后,应该调用

[tableView beginUpdates];
[tableView endUpdates];

这将再次调用
-(CGFloat)tableView:(UITableView*)tableView heightforrow索引路径:(nsindepath*)indepath
将调整UITableView单元格的大小。在该方法中,您可以根据UIWebView的大小计算单元格的新高度。

它可能会帮助您,也可能会重复。我需要以同样的方式实现,但在上面的示例中是它的文本,在我的示例中,我从服务器下载内容,然后添加到UIWebView中}称之为“开始”,但没有成功。在“开始”中输入错误。应该是“BeginUpdate”,在更新负责计算/返回单元格高度的对象后,将
*Updates
方法调用放在哪里?如果对象位于uitableviewcell中,如何执行此操作?它只是以无限递归调用结束。。。