iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在可变高度TableViewCell内,根据动态本地内容确定UIWebView高度大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,所以我知道这个问题已经被问到并被问到了.有很多好的建议,但我无法按预期工作.我正在尝试创建一个tableview单元格,可以根据不同的html动态设置其加载高度.每个人都建议使用以下方法.

-(void)webViewDidFinishLoad:(UIWebView *)webView

他们说使用javascript计算高度如下:

NSString *output = [webView StringByEvaluaTingJavaScriptFromString:@"document.body.scrollHeight;"];

或者做这样的事情(我创造了这个):

self.webView = webView;
CGRect frame = webView.frame;
frame.size.height = 1;
webView.frame = frame;
CGSize fitTingSize = [webView sizeThatFits:CGSizeZero];
frame.size = fitTingSize;
webView.frame = frame;

这两种方法都返回webview的正确高度,但它们是在初始化tableview之后发生的.此webViewDidFinishLoad在heightForRowATindexPath方法之后调用.因此,当建造桌子时,我没有牢房的高度.那么每个人都说好了然后只是在你的webViewDidFinishLoad中重新加载一个tableview重新加载它再次起作用,但我不喜欢这个,因为有一个滞后,当你到达那个部分时它会使tableview的滚动起伏不定.我怎样才能解决这个问题?并使其顺利?我想在加载视图之前可能以某种方式确定webview高度,但不确定我将如何做到这一点.还尝试将html转换为纯文本字符串,但这会导致错误的高度,因为html包含空格和内容,而纯文本则没有.任何帮助,将不胜感激!

解决方法

我的建议与@Timothy Moose非常相似,通过在屏幕上渲染webview.

在这里采取的方法是……

-(void)viewDidLoad
{
     //Create a UIWebView and store it in a property
     //Hook the delegate to the view controller.
     //Load the html String to the UIWebView.

     //The rest of your initialization
}

在这种情况下,您的heightForRowATindexPath:仍可能在完成Web视图之前被调用.

你可以通过几种方式处理它.这是一个建议.

在UIWebView的webViewDidFinishLoading的委托方法中,检查以确保进行调用的webview是存储在您的属性中的webview.如果是这样,请调用重新加载包含webview的部分(或行).这应该调用heightForRowATindexPath:方法再次调用,在这种情况下,您可以在webViewDidFinishLoading回调中存储webview的高度.

如果在视图首次显示时单元格不在屏幕上,则在cellForRowATindexPath:中创建的单元格应具有您在viewDidLoad中创建的UIWebView.通过将uIWebView添加到单元格的内容视图来执行此操作.

如果在视图首次显示时单元格在屏幕上,我会在第一次加载单元格时建议一个活动微调器,然后在webview完成加载后,使用webview重新加载单元格.

大佬总结

以上是大佬教程为你收集整理的ios – 在可变高度TableViewCell内,根据动态本地内容确定UIWebView高度全部内容,希望文章能够帮你解决ios – 在可变高度TableViewCell内,根据动态本地内容确定UIWebView高度所遇到的程序开发问题。

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

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