2015-12-09 48 views
9

我有不同的examples我們可以在那裏更新UITableViewCell高度根據生長UITextView這實際上是爲我工作。我面臨的問題是,我在UITableViewCell內部的UITextView以下有更多子視圖。這樣,單元格的高度會更新,但子視圖的位置保持不變,導致UITextView與子視圖重疊。 只需提一下,我沒有使用自動佈局。
我該如何解決這個問題?
這是三個屏幕截圖將在瞭解我的問題有所幫助:如何更新UITableViewCell高度,因爲文本輸入到UITextView

1 TextView的前所示:

enter image description here

2的TextView後顯示:

enter image description here

3.文本後輸入:

enter image description here

+0

在您的tableview單元格中,將所有子視圖(保持固定)放在一個視圖中,並且當您的UITextview高度更改(增大/減小)時,將該視圖設置爲位於UITextview下方的位置。 –

+0

你在用什麼語言? –

回答

2

是否使用自動佈局?我已經多次使用UITableViewCells完成此操作,但主要是使用UILabel而不是UITextView。

您的問題可能通過自動佈局解決。您將所有子視圖(在UITableViewCell內部)相對於彼此進行佈局。如果一個視圖(即UITextView)更改大小,則其他視圖將相對於該視圖進行調整。這裏有一些有用的鏈接。

這不是特定於UITableViewCell,但有很多很好的各種場景的例子。 斯坦福大學開發的iOS 7應用:第9講 - 動畫和自動佈局 https://www.youtube.com/watch?v=r1sc7NI6-wo

+0

我沒有使用自動佈局。如果我現在改變它,這將是一個巨大的變化。 – Nitish

+0

我瞭解一些觀點可能太難以切換到自動佈局。請記住,您可以將彈簧和支柱與自動佈局一起使用。它不一定非得是一個或另一個。你也可以嘗試實現一個自定義的UIView(.xib),它自動佈局,但是是一個使用彈簧和struts來查看佈局的視圖的子視圖。 – xdeleon

+0

我正在從cellForRowAtIndex中的代碼創建UITableViewCell子視圖,而不是通過xib。 – Nitish

3

我假設你正在使用自動佈局這個細胞(但我們可以使用一個代碼示例或Xcode的截圖,以幫助您更具體)。如果您在使用自動佈局,你要確保:

  1. 你有UITextView的和下面的其他子視圖的UIView在細胞之間的約束
  2. 其他的UIView子視圖最終受限於細胞的底部。
+0

我沒有使用自動佈局。如果我現在改變它,這將是一個巨大的變化。 – Nitish

+0

添加了屏幕截圖。 – Nitish

+0

您需要使用自動佈局來調整間隙。 –

3

因爲UITableViewCell s的重用,你會發現,將對象添加到contentView時,這些對象也將不被去除重複使用,從而導致重疊的子視圖。用這種方法開始你的cellForRowAtIndexPath用下面的代碼:

static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 

    for (UIView * view in [cell.contentView subviews]) { 
//  clears the cell before reusing 
     [view removeFromSuperview]; 
    } 

希望這會有所幫助。

相關問題