2013-06-01 28 views
4

我在每個UITableViewCell中都有一個可編輯的UITextViewUITableView中的UITextView,使用AutoLayout進行平滑展開

UITextViews精細調整預加載文本(經heightForRowAtIndexPath計算),但我不知道如何獲得平滑縮放動態添加文本時使用AutoLayout。它似乎被切斷了。

使用AutoLayout,如何平滑調整UITableViewCellUITextView以適合輸入到UITextView的文本?

回答

3

你不能。表視圖單元格不通過佈局約束來派生它的高度,而是通過委託方法tableView:heightForRowAtIndexPath:

你大概可以達到你所追求這樣的效果:

  • 引腳文本以單元格內容視圖頂部和底部
  • 在您的文本視圖委託方法,重新計算文本大小因爲它是進入
  • 如果要求大小的變化,只要更新模型中的高度是你的表視圖存儲
  • 呼叫beginUpdatesendUpdates。這將導致它重新調整高度,併爲新尺寸設置動畫(通過擴展,也調整文本視圖的大小)。
+0

像一個魅力:) –

7

接受的答案是不推薦使用的一個,存在的iOS 8 SDK這一個乾淨的解決方案

在viewDidLoad中,告訴的tableView自動計算行高度:

tableView.estimatedRowHeight = 44.0f; 
tableView.rowHeight = UITableViewAutomaticDimension; 

落實textViewDidChange :UITextViewDelegate協議的方法,並告訴tableView在每次文本編輯時重新繪製自己:

- (void)textViewDidChange:(UITextView *)textView { 
[tableView beginUpdates]; 
[tableView endUpdates]; 
} 

不要忘記在Storyboard/IB或tableView中的某處設置UITextView委託:cellForRowAtIndexPath: