2010-09-16 65 views
1

當UITableViewControllers打交道,有沒有一種方法來設置一個單獨的表格單元格的比這個方法以外的高度:是否可以通過cellForRowAtIndexPath更新UITableCell的高度?

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 

基本上什麼,我試圖做的是插入文本塊到一個表單元會有一個可變的高度。文本的長度可以在100-1000個字符之間。我想要做的是使表格單元格的高度適合插入到其中的文本塊。我不看的是一種縮小文本以適應固定高度的表格單元格行的方法(這似乎是我找到的解決方案)。有沒有辦法通過以下方法調用單元格的高度?

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

目前,我做下面的代碼片段找到文本的高度,但是我不覺得這是這樣做的正確的/最佳途徑。如果我得到了文本塊的大小限制,那麼我可以通過這種方法更新具有適當高度的表單元格:cellForRowAtIndexPath。此外,我正在閱讀下面返回的值是以像素爲單位,所以我需要從像素轉換爲其他數值,這會給我正確的行高度?

CGSize constraintSize; 
constraintSize.width = 500.0f; 
constraintSize.height = 500.0f; 
CGSize theSize = [theText sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap]; 

UPDATE: 所以這個環節似乎做我想要的東西: Get tableView:heightForRowAtIndexPath: to happen after tableView:cellForRowAtIndexPath:?

然而,上面的鏈接似乎仍然夾在文本的最後幾個字符/詞。這一切似乎取決於文本塊中使用的字符/單詞的數量。我可能是錯的。有任何想法嗎?

回答

0

被剪切的最後一個字符可能是由太寬的約束尺寸造成的。減少幾個像素,看看它是如何工作的。您也可以在返回的高度上添加一個常量偏移量。所有UILabel有一個小的餘量,可能不會在您引用的答案中正確考慮。

相關問題