[英]How can I size a UICollectionViewCell based on the content of a UIWebview?
我在動態添加UICollectionViewCell
s到一個UICollectionView
使用委托方法cellForItemAtIndexPath
。 每次該方法運行時創建的UICollectionViewCell
包含一個UIWebView
,其內容大小不一。 以編程方式創建UICollectionViewCell
時,無法設置其大小。 相反,我必須實現一個名為sizeForItemAtIndexPath
的方法。
不幸的是,這種確定大小的方法似乎在實際創建像元的方法之前被調用。 目前,我無法引用UIWebView
的大小來幫助找到合適的單元格大小。 我所擁有的只是UIWebView
的實際內容,但是我不知道如何使用它來查找大小,因為內容包括樣式化的HTML和圖像。
我試圖在內存中創建UIWebViews
並從中獲取尺寸,但是尺寸始終為0。 我有些放心,這沒有用,因為對我來說這似乎是一個丑陋的駭客。
還有什么我可以嘗試的嗎?
也許這會有所幫助:
- (void)webViewDidFinishLoad:(UIWebView *)aWebView {
CGRect frame = aWebView.frame;
CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
aWebView.frame = frame;
}
我先前的答案不適用於UICollectionView,但適用於UITableView。 這在UICollectionViewController中為我工作:
NSString *webViewHeight = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"idOfMainElementInHtml\").offsetHeight;"];
在此使用
- (void)webViewDidFinishLoad:(UIWebView *)webView
記住NSMutableDictionary中的值,該值將NSIndexPath對象映射到高度值。 每次使用此方法將以前的值與新值進行比較,然后讓Layout對象使用此字典來計算新的布局。
玩得開心 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.