2010-09-17 21 views
14

Có thể sửa đổi chiều cao của chỉ một ô trong chế độ xem bảng được nhóm không?
Tôi có chế độ xem bảng với 2 phần của 3 và 2 hàng ... Tôi sẽ thay đổi chiều cao hàng của hàng thứ hai của phần thứ hai ...tableXem chiều cao ô ... làm thế nào để tùy chỉnh nó?

Làm cách nào để thực hiện việc này?
Cảm ơn!

Trả lời

51

Bạn có thể nhìn vào phương pháp này:

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

Trong trường hợp của bạn, mã sẽ trông giống như:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.section == 1 && indexPath.row == 1) { 
     return SPECIAL_HEIGHT; 
    } 
    return NORMAL_HEIGHT; 
} 

Bạn có thể tìm kiếm thêm thông tin chi tiết về the method here

+0

Ok cảm ơn! Nhưng tôi có một vấn đề ... Nếu tôi gõ một số như trả lại 60.0; hoạt động rất nhiều nhưng nếu tôi gõ một số mã để trả về chiều cao dựa trên một văn bản UILabel, nền tế bào không xuất hiện ... Tôi đã thêm mã này trong phương thức cellForRowAtIndexPath: – matteodv

+0

else if (indexPath.section == 1 && indexPath.row == 1) { \t \t descrizioneLabel = [[Phân bổ UILabel] initWithFrame: CGRectMake (10, 5, 285, 50)]; \t \t descrizioneLabel.font = [UIFont boldSystemFontOfSize: 14.0]; \t \t descrizioneLabel.backgroundColor = [UIColor clearColor]; \t \t descrizioneLabel.numberOfLines = 0; \t \t descrizioneLabel.text = wish.descrizione; \t \t [cell.contentView addSubview: descrizioneLabel]; \t} – matteodv

+0

và đây là phương pháp đăng bởi bạn: - (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath { \t \t if (indexPath.section == 1 && indexPath.row == 1) { \t \t NSString * test = descrizioneLabel.text; \t \t UIFont * cellFont = [UIFont boldSystemFontOfSize: 14.0]; \t \t CGSize constraintSize = CGSizeMake (280.0, MAXFLOAT); \t \t CGSize labelSize = [testo sizeWithFont: cellFont constrainedToSize: constraintSize lineBreakMode: UILineBreakModeWordWrap]; \t \t \t \t trả lại nhãnSize.height; \t} \t \t return 44.0; } – matteodv

0

Có một cái nhìn tại

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

Đối với indexPath chỉ cần kiểm tra mà hàng và phần và điều chỉnh chiều cao phù hợp

3

Trong iOS 8 và ở trên, chúng tôi có thể sử dụng chiều cao Chế độ xem bảng động Chiều cao.

Sử dụng tính năng này UITableviewCell có được chiều cao của nó từ nội dung của nó và chúng tôi không cần phải viết heightForRowAtIndexPath

Tất cả tôi phải làm trong viewDidLoad()

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

Nếu cell chứa uilabel. sau đó áp dụng các ràng buộc để uilabel

enter image description here

Hãy chắc chắn rằng bạn thay đổi Label --Lines-- đến 0

enter image description here

Các tế bào sẽ phát triển tự động với nội dung của uilabel:

enter image description here

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