我正在使用委托方法UICollectionViewCell
向UICollectionView
动态添加cellForItemAtIndexPath
。每次运行该方法时创建的UICollectionViewCell
包含UIWebView
,其内容具有不同的大小。以编程方式创建时,我无法设置UICollectionViewCell
的大小。相反,我必须实现一个名为sizeForItemAtIndexPath
的方法。
不幸的是,在实际创建单元格的方法之前,这种尺寸确定方法似乎被称为。目前,我无法参考UIWebView
的大小来帮助找到适合细胞的大小。我所拥有的只是UIWebView
的实际内容,但我不知道如何使用它来查找大小,因为内容包括样式化的HTML和图像。
我尝试在内存中创建UIWebViews
并从中获取大小,但我的维度总是为0。我有点松了一口气,这不起作用,因为它对我来说似乎是一个丑陋的黑客。
我还能尝试别的吗?
答案 0 :(得分:1)
也许这会有所帮助:
- (void)webViewDidFinishLoad:(UIWebView *)aWebView {
CGRect frame = aWebView.frame;
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
aWebView.frame = frame;
}
答案 1 :(得分:1)
我以前的回答不适用于UICollectionView,而是使用UITableView。这对我来说在UICollectionViewController中起作用:
NSString *webViewHeight = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"idOfMainElementInHtml\").offsetHeight;"];
在
中使用此功能- (void)webViewDidFinishLoad:(UIWebView *)webView
记住NSMutableDictionary中的值,它将NSIndexPath对象映射到高度值。每次在此方法中将先前的值与新值进行比较,然后让Layout对象使用此字典来计算新布局。
玩得开心: - )