2016-02-08 93 views
4

我有一個UITableViewCell設計與.xib使用細胞自動調整。在iOS 9中運行良好,但在iOS 8中,單元不會自行擴展,並且內部的標籤仍保留1行文本。如果單元離開屏幕並返回(即滾動後),則所有標籤均可用。iOS UITableViewCell autosizing bug

想法?我認爲這是一個iOS 8的錯誤。

enter image description here enter image description here

回答

3

我曾面臨同樣的問題。如果您的約束設置正確,則需要在單元格中爲每個UILabel設置preferredMaxLayoutWidth,然後再返回單元格。下面是一些示例代碼

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; 
    cell.lblTitle.text = @"N"; 
    cell.lblDetails.text = @"bla bla"; 
    cell.lblOther.text = @"other text"; 


    // Configure the cell... 
    CGfloat leftPading =// "your logo width + spacing between logo and label" 
    CGfloat rightPading = //your label trailing space 
    cell.lblTitle.preferredMaxLayoutWidth = CGRectGetWidth(tableView.bounds)-(leftPading +rightPading); 
    cell.lblDetails.preferredMaxLayoutWidth = CGRectGetWidth(tableView.bounds)-(leftPading +rightPading); 
    [cell setNeedsUpdateConstraints]; 
    [cell updateConstraintsIfNeeded]; 

    return cell; 
    } 

Have a look at this to know how to put constrains properly

希望這將幫助你。

-1

這取決於你的代碼,但有一個非常簡單的方法來做到這一點

1. Define auto layout constraints for your prototype cell 
2. Specify the estimatedRowHeight of your table view 
3. Set the rowHeight of your table view to UITableViewAutomaticDimension 

一個很好的解釋可以在這裏找到http://www.appcoda.com/self-sizing-cells/

編輯:嗯,我猜這個笑話是對我的假設問題是關於swift而不是obj-c(沒有注意到標籤)。 因爲我認爲我的答案仍然有用(對於其他人來說)...我將把它留在這裏。

-1

您需要爲單元格的高度添加表視圖委託方法。

-(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return UITableViewAutomaticDimension; 
} 

- (CGFloat) tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 50.0f; 
} 

它會工作。如果在自動佈局約束上可能存在問題。