2013-02-12 16 views
10

Tôi hiện đang phát triển trên một ứng dụng, hiển thị một số tweet trong một lần xem bảng. Trên bảng phân cảnh, tôi đã tạo một ô mẫu, bao gồm khái niệm gui cơ bản về một mục nhập tweet.iOS tính chiều cao văn bản trong ô xem bảng

Có vẻ khoảng như thế này:

++++++++++++++ 
++Username++++ 
++++++++++++++ 
++Tweet+++++++ 
++++++++++++++ 
++Time-Ago++++ 
++++++++++++++ 

Bây giờ tôi đang tính toán chiều cao của tế bào với đoạn mã sau, nhưng bằng cách nào đó nó không thành công.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSDictionary * currentTweet = [tweetArray objectAtIndex: indexPath.row]; 
    NSString * tweetTextString = [currentTweet objectForKey: @"text"]; 
    CGSize textSize = [tweetTextString sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:CGSizeMake(630, 1000) lineBreakMode: NSLineBreakByWordWrapping]; 

    float heightToAdd = 24 + textSize.height + 15 + 45; 
    if(heightToAdd < 90) { 
     heightToAdd = 90; 
    } 

    return heightToAdd; 
} 

Bằng cách này, có điều gì đó khác lạ, lạ. Nếu tôi cuộn tableview toàn bộ ứng dụng dường như đóng băng. Đây có phải là bình thường hoặc tôi đang làm điều gì sai?

+0

Nó không phải là bình thường @ đóng băng. Từ bên ngoài, tôi có một cảm giác, điều này có thể là do một trong hai lý do: 1) bạn đang làm quá nhiều phép tính do nó dẫn đến điều này. 2) Để hiển thị văn bản theo cách được định dạng, dường như bạn có thể đang sử dụng một số loại mã hóa trên mỗi văn bản của hàng. –

+0

Xin chào, cảm ơn vì bình luận của bạn. Bạn đúng. Tôi gọi [tableView reloadData] mỗi giây để cập nhật số giây trước. Tôi tháo bộ đếm và đóng băng dừng lại. Tôi đang cố gắng làm điều này bên trong cellview. :) –

+0

Thật tuyệt. :) –

Trả lời

13

Hãy thử điều này cho vấn đề của bạn:

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

    NSDictionary * currentTweet = [tweetArray objectAtIndex: indexPath.row]; 

    NSString * tweetTextString = [currentTweet objectForKey: @"text"]; 

    CGSize textSize = [tweetTextString sizeWithFont:[UIFont systemFontOfSize:15.0f] constrainedToSize:CGSizeMake(240, 20000) lineBreakMode: UILineBreakModeWordWrap]; //Assuming your width is 240 

    float heightToAdd = MIN(textSize.height, 100.0f); //Some fix height is returned if height is small or change it to MAX(textSize.height, 150.0f); // whatever best fits for you 

    return heightToAdd; 
} 

Hy vọng nó giúp.

+0

'sizeWithFont' và' UILineBreakModeWordWrap' không được dùng nữa – aykutt

Các vấn đề liên quan