大佬教程收集整理的这篇文章主要介绍了ios – 在可变高度TableViewCell内,根据动态本地内容确定UIWebView高度,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
-(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包含空格和内容,而纯文本则没有.任何帮助,将不胜感激!
-(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,请注明来意。