2014-10-30 89 views
0

我正在尋找一種方法來動態調整UICollectionViewCell的大小UICollectionView。這些單元格包含一個用動態HTML內容填充的UIWebView。因此我不知道之前的webview的高度。UICollectionView與包含UIWebViews的單元格動態調整大小

我試圖掛鉤func webViewDidFinishLoad(webView: UIWebView)函數並動態調整它們的大小,但這會破壞整個佈局。因爲細胞彼此長大。

我要爲iOS 7.1構建

有沒有人有線索?

+0

你是否找到了一個好的解決方案呢?我有同樣的問題。我嘗試了幾種方法,但我相信沒有一種標準方法。 iOS-JavaScript橋是我需要考慮的事情。 – esh 2015-07-02 08:51:09

+0

Hi @Chris您是否找到解決方案? – 2017-10-12 13:42:36

回答

-1

執行以下操作:

  1. 創建一個數組通過索引heightArray: [CGFloat]
  2. 存儲單元的高度。當func webViewDidFinishLoad(webView: UIWebView)回報,你能確定電池的高度。使用單元格索引將此高度保存到您的陣列中heightArray[indexPath.row] = height
  3. 請致電tableView.beginUpdates()tableView.endUpdates()。這將迫使該表通過調用func tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
  4. 實施func tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat從返回的高度來重新計算單元格的高度你給heightArray

這是在一個UITableView有活力的細胞高度的大致輪廓。試一試。

+0

謝謝......但我正在尋找'UICollectionView'和* not *'UITableView'。我認爲集合視圖沒有'heightFor ...'方法? – Chris 2014-10-31 14:31:27

1

創建UIWebView的高度約束並將約束添加到UICollectionViewCell的出口。

超載的方法webViewDidFinishLoad:

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    // Fit web content size. 
    CGRect frame = webView.frame; 
    CGRect oldFrame = frame; 
    frame.size.height = 1; 
    webView.frame = frame; 
    CGSize fittingSize = [webView sizeThatFits:CGSizeZero]; 
    webView.frame = oldFrame; 

    // Set content web view height constraint to new content size. 
    self.contentWebViewHeightConstraint.constant = fittingSize.height; 
} 

現在,當webView的高度約束更改單元格的高度,如果你正確地設置了約束應該改變。

+0

我也面臨同樣的問題。我已經這樣做了,但所有單元格的高度都不一樣,當我滾動列表時,重用的單元格需要時間來重新調整爲新的大小。 – 2017-10-05 11:06:18

相關問題