如何根据webview高度修复tableviewcell的高度? (我在每个tableviewcell中加载webview)

时间:2013-03-21 11:33:53

标签: iphone objective-c uitableview

// I am loading **HTML file** in **UIWebview** which is located on **tableviewcell**.

我想根据HTML文件高度修复单元格的高度。

注意:加载HTML文件对于每个单元格都不同。(每个HTML文件的高度不是常量)

3 个答案:

答案 0 :(得分:4)

要获得UIWebView对象的高度,首先需要加载。然后在UIWebView的委托方法中,您可以根据html内容获得高度,如下所示。

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"%f",myWebView.scrollView.contentSize.height);
}

你也可以通过JS插件获得UIWebView的高度

[myWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"];

webViewDidFinishLoad方法中,您必须根据webview对象标记存储高度

之后加载您的表格并在下面的方法相应地给出高度

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

答案 1 :(得分:2)

如果我理解正确的话。

在这里为cell.textLabel设置cell.textLabel.lineBreakMode和行数。 (0 - 无穷大)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   static NSString *CellIdentifier = @"Cell";

   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
   if (cell == nil) {
       cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                   reuseIdentifier:CellIdentifier] autorelease];

       cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
       cell.textLabel.numberOfLines = 0;
   }

   cell.textLabel.text = [news objectAtIndex:indexPath.row];

   return cell;

}

在这里你需要计算细胞的高度。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{    
    NSString *cellText = [news objectAtIndex:indexPath.row];
    UIFont *cellFont = [UIFont fontWithName:@"Helvetica-Bold" size:20.0f];
    CGSize constraintSize = CGSizeMake(320.0f, MAXFLOAT);

    CGSize labelSize = [cellText sizeWithFont:cellFont 
                            constrainedToSize:constraintSize 
                                lineBreakMode:UILineBreakModeWordWrap];

    return labelSize.height + 20.0f;
}

答案 2 :(得分:1)

实现UITableViewDelegate方法 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *text = [self getItemForKey:kSummary];
    CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
    //You will need to define kDefaultCellFont
    CGSize labelSize = [text sizeWithFont:kDefaultCellFont 
                    constrainedToSize:constraintSize 
                        lineBreakMode:UILineBreakModeWordWrap];
    return labelSize.height + ANY_OTHER_HEIGHT;
}

如果您想要更多,请查看Link