如何根据UIWebview的内容调整UICollectionViewCell的大小?

时间:2013-05-28 17:46:54

标签: iphone cocoa-touch uicollectionview

我正在使用委托方法UICollectionViewCellUICollectionView动态添加cellForItemAtIndexPath。每次运行该方法时创建的UICollectionViewCell包含UIWebView,其内容具有不同的大小。以编程方式创建时,我无法设置UICollectionViewCell的大小。相反,我必须实现一个名为sizeForItemAtIndexPath的方法。

不幸的是,在实际创建单元格的方法之前,这种尺寸确定方法似乎被称为。目前,我无法参考UIWebView的大小来帮助找到适合细胞的大小。我所拥有的只是UIWebView的实际内容,但我不知道如何使用它来查找大小,因为内容包括样式化的HTML和图像。

我尝试在内存中创建UIWebViews并从中获取大小,但我的维度总是为0。我有点松了一口气,这不起作用,因为它对我来说似乎是一个丑陋的黑客。

我还能尝试别的吗?

2 个答案:

答案 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对象使用此字典来计算新布局。

玩得开心: - )