
-(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高度所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)