1

我正在使用委托方法将UICollectionViewCells 动态添加到 a中。每次运行该方法时创建的 包含一个大小不同的内容。以编程方式创建它时,我无法设置它的大小。相反,我必须实现一个名为.UICollectionViewcellForItemAtIndexPathUICollectionViewCellUIWebViewUICollectionViewCellsizeForItemAtIndexPath

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

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

还有什么我可以尝试的吗?

4

2 回答 2

1

我之前的回答不适用于 UICollectionView,但适用于 UITableView。这在 UICollectionViewController 中对我有用:

 NSString *webViewHeight =  [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"idOfMainElementInHtml\").offsetHeight;"];

使用这个

- (void)webViewDidFinishLoad:(UIWebView *)webView

记住将 NSIndexPath 对象映射到高度值的 NSMutableDictionary 中的值。在这个方法中每次都比较之前的值和新的值,然后让 Layout 对象使用这个字典来计算一个新的布局。

玩得开心 :-)

于 2013-06-17T14:00:51.053 回答
1

也许这有帮助:

- (void)webViewDidFinishLoad:(UIWebView *)aWebView {
    CGRect frame = aWebView.frame;
    CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;
    aWebView.frame = frame;
}
于 2013-06-14T07:50:46.963 回答