iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 将UIWebView转换为具有动态大小的UITableViewCell大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我将UIWebView对象转换为多个UITableViewCell.每个webView都有不同的大小.最初,所有细胞都是相同的高度.用户触摸单元格后,会展开以显示所有webView内容.

我正在使用 – (void)webViewDidFinishLoad:(UIWebView *)aWebView来动态获取webView高度,并且 – (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath来调整单元格的大小.但是,仅在调整大小方法调用webViewDidFinishLoad,因此,使用旧值为webView高度调整大小.

我试图以所需的顺序手动调用这两种方法,但它确实有效(我认为我根本不应该这样做,无论如何……).

这是我将Web视图加载到每个单元格的代码

[self.webView setUserInteractionEnabled:NO];
    [self.webView loadHTMLString:finalString baseURL:nil];
    [cell addSubview:self.webView];

    cell.accessoryView = accessoryLabel;
    cell.textLabel.text = nil;

    self.selectedRowIndex = indexPath.row;

    [tableView beginUpdates];
    [tableView endUpdates];
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

要动态获取单元格大小:

- (void) webViewDidFinishLoad:(UIWebView *)aWebView {

CGRect frame = aWebView.frame;
frame.size.height = 1;
aWebView.frame = frame;
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
aWebView.frame = frame;

self.cellSize = fittingSize.height;

NSLog(@"Calling webViewDidFinishLoad. Cell size value: %lf",self.cellSize);

}

要更改单元格大小:

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

if(indexPath.row == self.selectedRowIndex) {
  NSLog(@"Resizing cell with size: %lf",self.cellSize);
    return self.cellSize + 10;
}

return 44;
}

以下是输出的外观:

2015-02-24 22:59:08.902 testProject[62200:2703641] Resizing cell with size: 0.000000
2015-02-24 22:59:09.064 testProject[62200:2703641] Calling webViewDidFinishLoad. Cell size value: 501.000000

有没有办法只在执行webViewDidFinishLoad后调整单元格的大小?

我非常感谢任何帮助!!

解决方法

我仍然不知道为什么会这样,但我使用以下方法解决了它:

我将[tableView beginUpdates]和[tableView endUpdates]指令移到了webViewDidFinishLoad方法.这样,每当执行webViewDidFinishLoad时,它都会正确更新单元格大小.虽然我不认为这是最好的解决方案,但它确实有效.

现在,我的webViewDidFinishLoad方法如下所示:

- (void) webViewDidFinishLoad:(UIWebView *)aWebView {

CGRect frame = aWebView.frame;
frame.size.height = 1;
aWebView.frame = frame;
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
aWebView.frame = frame;

self.cellSize = fittingSize.height;

[self.tableView beginUpdates];
[self.tableView endUpdates];

NSLog(@"Calling webViewDidFinishLoad. Cell size value: %lf",self.cellSize);

}

也许答案可以帮助其他有类似问题的人.

大佬总结

以上是大佬教程为你收集整理的ios – 将UIWebView转换为具有动态大小的UITableViewCell全部内容,希望文章能够帮你解决ios – 将UIWebView转换为具有动态大小的UITableViewCell所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: