fra*_*yer 69 iphone cocoa-touch uiwebview uitableview ios
我正在尝试创建一个UITableView
可变高度行,如本问题的答案中所述
我的问题是每个单元格包含一个UIWebView
具有不同(静态加载)的内容我无法弄清楚如何根据内容计算合适的高度.有没有办法做到这一点?我尝试过这样的事情:
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
WebViewCell *cell = (WebViewCell*)[self tableView:tableView cellForRowAtIndexPath:indexPath];
[cell setNeedsLayout];
[cell layoutIfNeeded];
return cell.bounds.size.height;
}
Run Code Online (Sandbox Code Playgroud)
细胞本身是从笔尖加载的,笔尖只是一个UITableViewCell
含有a 的笔尖UIWebView
.(如果细胞只是将自己调整到html内容的最大值,那也没关系,尽管可变高度会更好).
dun*_*cox 77
这段代码对于表视图使用来说可能太慢了,但是可以解决这个问题.它看起来没有任何替代方案,因为UIWebView不提供对DOM的直接访问.
在视图控制器中,viewDidLoad
我在webview中加载了一些HTML,当加载完成后,运行一些javascript来返回元素高度.
- (void)viewDidLoad
{
[super viewDidLoad];
webview.delegate = self;
[webview loadHTMLString:@"<div id='foo' style='background: red'>The quick brown fox jumped over the lazy dog.</div>" baseURL:nil];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *output = [webview stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"foo\").offsetHeight;"];
NSLog(@"height: %@", output);
}
Run Code Online (Sandbox Code Playgroud)
Unf*_*ter 28
我很高兴找到你的答案,javascript技巧对我很有用.
但是,我想说还有"sizeThatFits:"方法:
CGSize goodSize = [webView sizeThatFits:CGSizeMake(anyWidth,anyHeigth)];
Run Code Online (Sandbox Code Playgroud)
我们必须设置一个不同于零的首选大小,但除此之外,它通常总是有效!
通常,因为使用UIWebViews,它似乎只在第二次加载时工作(我使用"loadHTMLString:"方法,是的,我从委托"didFinishLoad:"方法调用"sizeThatFits:").
所以,这就是为什么我很高兴找到适用于任何情况的解决方案.
这似乎有效.目前.
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
CGFloat webViewHeight = 0.0f;
if (self.subviews.count > 0) {
UIView *scrollerView = [self.subviews objectAtIndex:0];
if (scrollerView.subviews.count > 0) {
UIView *webDocView = scrollerView.subviews.lastObject;
if ([webDocView isKindOfClass:[NSClassFromString(@"UIWebDocumentView") class]])
webViewHeight = webDocView.frame.size.height;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果失败,它应该安全返回0.
归档时间: |
|
查看次数: |
65222 次 |
最近记录: |